![]() | |||||||||||||
Messages in this thread |
On Mon, 16 Oct 2006 11:13:30 +0200, Duncan Sands <duncan.sands@math.u-psud.fr> wrote: > There may have been a similar problem with > USB locking, since there too probe was expecting a lock to be held that might > not be held when called from the kthread: > > * This function must be called with @dev->sem held. When called for a > * USB interface, @dev->parent->sem must be held as well. > */ > int driver_probe_device(struct device_driver * drv, struct device * dev) But as we don't know we're probing an usb interface, we have no chance of ensuring that dev->parent->sem is taken in the multithreaded case (meaning we couldn't do multithreaded probe for usb). (Any idea why the parent's sem must be taken for usb interfaces?) > Also, what about device removal racing with probe? Is it possible for someone to > attempt to remove a device in the gap between the call to device_attach and the > kthread actually running and doing the probe? That would result in remove and > probe being called in the wrong order... ->probe won't be called if the device is already being removed, but that still results in bus->remove being called without a prior ->probe (but not drv->probe since dev->driver is not set at that time). - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ | ||||||||||||
| Last update: 2006-10-16 10:59 [from the cache] ©2003-2008 | |||||||||||||