linux/drivers/base
Alan Stern c95a6b057b [PATCH] driver core: Fix races in driver_detach()
This patch is intended for your "driver" tree.  It fixes several subtle
races in driver_detach() and device_release_driver() in the driver-model
core.

The major change is to use klist_remove() rather than klist_del() when
taking a device off its driver's list.  There's no other way to guarantee
that the list pointers will be updated before some other driver binds to
the device.  For this to work driver_detach() can't use a klist iterator,
so the loop over the devices must be written out in full.  In addition the
patch protects against the possibility that, when a driver and a device
are unregistered at the same time, one may be unloaded from memory before
the other is finished using it.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-06-20 15:15:28 -07:00
..
power [PATCH] Add a semaphore to struct device to synchronize calls to its driver. 2005-06-20 15:15:12 -07:00
attribute_container.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
base.h [PATCH] Move device/driver code to drivers/base/dd.c 2005-06-20 15:15:13 -07:00
bus.c [PATCH] Fix up bus code and remove use of rwsem. 2005-06-20 15:15:18 -07:00
class.c [PATCH] class: add kerneldoc for the new class functions. 2005-06-20 15:15:11 -07:00
core.c [PATCH] Use a klist for device child lists. 2005-06-20 15:15:23 -07:00
cpu.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
dd.c [PATCH] driver core: Fix races in driver_detach() 2005-06-20 15:15:28 -07:00
dmapool.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
driver.c [PATCH] driver core: change export symbol for driver_for_each_device() 2005-06-20 15:15:24 -07:00
firmware_class.c [PATCH] add TIMEOUT to firmware_class hotplug event 2005-04-18 21:57:31 -07:00
firmware.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
init.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Kconfig Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Makefile [PATCH] Move device/driver code to drivers/base/dd.c 2005-06-20 15:15:13 -07:00
map.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
node.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
platform.c [PATCH] DocBook: fix some descriptions 2005-05-01 08:59:26 -07:00
sys.c [PATCH] sysfs: (driver/base) if show/store is missing return -EIO 2005-06-20 15:15:02 -07:00
transport_class.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00