看板 FB_hackers 關於我們 聯絡資訊
--Yc07lwn3HUDqPfE2 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Fri, Apr 25, 2008 at 05:12:12PM +0300, Andriy Gapon wrote: > on 25/04/2008 12:50 Kostik Belousov said the following: > >Did you run this with WITNESS ? > > > >You put the whole devctl_notify() call under the dev_mtx. This includes > >the malloc(), PROC_LOCK() and signalling, and some internal devctl_queue= () > >stuff. This is wrong. >=20 > Kostik, >=20 > I tried this patch only with my working (non-debug) configuration. > I will try with WITNESS. > You think that acquiring all those locks while holding dev_mtx is bad? > I can try to place devctl_notify calls in make_dev_credv, make_dev_alias= =20 > and destroy_dev. The problem that I see is that destroy_devl ('l' at the= =20 > end) calls itself recursively for child devices, this is all done under= =20 > dev_mtx. So I am not sure how to call devctl_notify for those child=20 > devices properly. The malloc and free cannot be called while holding dev_mtx, this causes the LORs. Please, look at the rev. 1.207, 1.210 of the kern/kern_conf.c for the workarounds for the malloc issues. It seems that you may abuse the dev_unlock_and_free() to make the notifications. Also, I think it is wrong to establish the lock ordering relations between the process subsystem and cdev. --Yc07lwn3HUDqPfE2 Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.8 (FreeBSD) iEYEARECAAYFAkgR7H0ACgkQC3+MBN1Mb4jLJACg5zBTTG2ns1TaqjSQM7QhXRcI OUEAnjzCEmI2MlE2YOTyhJSYgUIhUD60 =HMoF -----END PGP SIGNATURE----- --Yc07lwn3HUDqPfE2--