linux/drivers
Alan Stern ef2c51746d Driver core: fix race in __device_release_driver
This patch (as1013) was suggested by David Woodhouse; it fixes a race
in the driver core.  If a device is unregistered at the same time as
its driver is unloaded, the driver's code pages may be unmapped while
the remove method is still running.  The calls to get_driver() and
put_driver() were intended to prevent this, but they don't work if the
driver's module count has already dropped to 0.

Instead, the patch keeps the device on the driver's list until after
the remove method has returned.  This forces the necessary
synchronization to occur.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2008-01-24 20:40:35 -08:00
..
acorn/char unicode diacritics support 2007-10-17 08:42:52 -07:00
acpi Kobject: change drivers/acpi/system.c to use kobject_create_and_add 2008-01-24 20:40:28 -08:00
amba
ata pata_pdc202xx_old: Fix crashes with ATAPI 2008-01-19 21:29:39 -08:00
atm [ATM] atm/suni.c: Fix section mismatch. 2008-01-20 20:31:44 -08:00
auxdisplay
base Driver core: fix race in __device_release_driver 2008-01-24 20:40:35 -08:00
block Kobject: change drivers/block/pktcdvd.c to use kobject_init_and_add 2008-01-24 20:40:29 -08:00
bluetooth [BLUETOOTH]: Always send explicit hci_ll wake-up acks. 2008-01-10 22:24:43 -08:00
cdrom SG: audit of drivers that use blk_rq_map_sg() 2007-10-24 13:21:21 +02:00
char kobject: convert hvcs to use kref, not kobject 2008-01-24 20:40:09 -08:00
clocksource
connector [CONNECTOR]: Don't touch queue dev after decrement of ref count. 2008-01-08 23:44:44 -08:00
cpufreq Kobject: change drivers/cpufreq/cpufreq.c to use kobject_init_and_add 2008-01-24 20:40:28 -08:00
cpuidle Kobject: change drivers/cpuidle/sysfs.c to use kobject_init_and_add 2008-01-24 20:40:28 -08:00
crypto Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2008-01-10 16:09:34 -08:00
dca
dio
dma DMA: Convert from class_device to device for DMA engine 2008-01-24 20:40:05 -08:00
edac Kobject: change drivers/edac to use kobject_init_and_add 2008-01-24 20:40:28 -08:00
eisa
firewire firewire: OHCI 1.0 Isochronous Receive support 2007-12-10 21:55:19 +01:00
firmware Kobject: change drivers/firmware/efivars.c to use kobject_init_and_add 2008-01-24 20:40:27 -08:00
hid HID: Don't access input_dev->private directly 2007-10-31 13:30:35 +01:00
hwmon hwmon: (it87) request only Environment Controller ports 2008-01-22 07:21:38 -05:00
i2c driver core: Make the dev_*() family of macros in device.h complete 2008-01-24 20:40:08 -08:00
ide IDE: Convert from class_device to device for ide-tape 2008-01-24 20:40:05 -08:00
ieee1394 ieee1394: iso and async streams: s/g list fix 2007-11-04 14:31:16 +01:00
infiniband Infiniband: make ipath driver use default driver groups. 2008-01-24 20:40:34 -08:00
input [SPARC64]: Fix section error in sparcspkr 2008-01-21 22:34:31 -08:00
isdn driver core: Make the dev_*() family of macros in device.h complete 2008-01-24 20:40:08 -08:00
kvm KVM: SVM: Fix FPU leak while emulating clts 2007-11-27 15:38:18 +02:00
leds leds: Fix locomo LED driver oops 2007-12-31 23:11:11 +00:00
lguest Remove bogus duplicate CONFIG_LGUEST_GUEST entry. 2008-01-19 21:29:39 -08:00
macintosh adb: Convert from class_device to device 2008-01-24 20:40:05 -08:00
mca
md Kobject: change drivers/md/md.c to use kobject_init_and_add 2008-01-24 20:40:29 -08:00
media fix wrong sized spinlock flags argument 2008-01-17 15:42:30 -08:00
message i2o: debug messages corrected 2007-11-05 15:12:31 -08:00
mfd MCP_UCB1200: Convert from class_device to device 2008-01-24 20:40:06 -08:00
misc kobject: convert ibmasm to use kref, not kobject 2008-01-24 20:40:08 -08:00
mmc sdhci: support JMicron JMB38x chips 2007-12-12 20:01:00 +01:00
mtd mtd: Convert from class_device to device for MTD/mtdchar 2008-01-24 20:40:06 -08:00
net Driver: add driver_add_kobj for looney iseries_veth driver 2008-01-24 20:40:34 -08:00
nubus
of [SPARC/64]: Consolidate of_register_driver 2007-10-17 21:17:42 -07:00
oprofile oProfile: oops when profile_pc() returns ~0LU 2007-11-14 18:45:37 -08:00
parisc Kobject: change drivers/parisc/pdc_stable.c to use kobject_init_and_add 2008-01-24 20:40:29 -08:00
parport parport: "dev->timeslice" is an unsigned long, not an int 2007-12-17 19:28:15 -08:00
pci PCI: remove foolish code from pci-driver.c 2008-01-24 20:40:34 -08:00
pcmcia PCMCIA: use proper call to driver_create_file 2008-01-24 20:40:33 -08:00
pnp pnpacpi: print resource shortage message only once (more) 2008-01-17 15:38:58 -08:00
power Merge git://git.infradead.org/battery-2.6 2007-10-22 19:20:52 -07:00
ps3 ps3: vuart: fix error path locking 2007-12-23 12:54:37 -08:00
rapidio
rtc rtc-at32ap700x: fix irq init oops 2007-12-17 19:28:15 -08:00
s390 zfcp: Use device_driver default attribute groups. 2008-01-24 20:40:34 -08:00
sbus [WATCHDOG] Sbus: cpwatchdog, remove SPIN_LOCK_UNLOCKED 2007-11-19 21:09:52 +00:00
scsi [SCSI] initio: fix module hangs on loading 2008-01-23 17:07:33 -06:00
serial kobject: convert icom to use kref, not kobject 2008-01-24 20:40:09 -08:00
sh superhyway: Handle device_register() retval properly. 2007-11-07 11:13:55 +09:00
sn
spi spi: omap2_mcspi PIO RX fix 2008-01-24 14:06:44 -08:00
ssb ssb: Fix probing of PCI cores if PCI and PCIE core is available 2008-01-08 23:30:10 -08:00
tc lk201: remove obsolete driver 2007-10-17 08:42:57 -07:00
telephony telephony: phonedev panics if unregistering device not registered [Bug 9266] 2007-11-05 15:12:33 -08:00
uio UIO: fix kobject usage 2008-01-24 20:40:26 -08:00
usb USB: use proper call to driver_create_file 2008-01-24 20:40:33 -08:00
video s3c2410_fb: fix line length calculation 2008-01-21 19:39:41 -08:00
virtio virtio: fix module/device unloading 2007-11-19 11:20:42 +11:00
w1 W1: w1_therm.c is flagging 0C etc as invalid 2008-01-22 09:17:48 -08:00
watchdog [WATCHDOG] Revert "Stop looking for device as soon as one is found" 2008-01-18 21:01:34 +00:00
xen Add missing newlines to some uses of dev_<level> messages 2007-10-18 14:37:28 -07:00
zorro Amiga zorro bus: Add missing zorro_device_remove() 2007-11-26 19:15:31 -08:00
Kconfig Virtio interface 2007-10-23 15:49:54 +10:00
Makefile Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2007-10-23 16:37:29 -07:00