devctl (alike?) for devfs
kostikbel at gmail.com
Fri Apr 25 14:37:00 UTC 2008
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.
> 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
> and destroy_dev. The problem that I see is that destroy_devl ('l' at the
> end) calls itself recursively for child devices, this is all done under
> dev_mtx. So I am not sure how to call devctl_notify for those child
> 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.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 195 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20080425/7eb055f2/attachment.pgp
More information about the freebsd-hackers