linux-sg2042/drivers
Laurent Pinchart f41ced8f10 Check fops_get() return value
Several subsystem open handlers dereference the fops_get() return value
without checking it for nullness.  This opens a race condition between the
open handler and module unloading.

A module can be marked as being unloaded (MODULE_STATE_GOING) before its
exit function is called and gets the chance to unregister the driver.
During that window open handlers can still be called, and fops_get() will
fail in try_module_get() and return a NULL pointer.

This change checks the fops_get() return value and returns -ENODEV if NULL.

Reported-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
Acked-by: Takashi Iwai <tiwai@suse.de>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Dave Airlie <airlied@linux.ie>
Acked-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2009-01-06 15:59:11 -08:00
..
accessibility
acpi cpumask: convert shared_cpu_map in acpi_processor* structs to cpumask_var_t 2009-01-03 19:15:40 +01:00
amba
ata Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2008-12-30 17:43:10 -08:00
atm atm: Driver for Solos PCI ADSL2+ card. 2008-12-26 01:26:11 -08:00
auxdisplay
base mm: show node to memory section relationship with symlinks in sysfs 2009-01-06 15:59:00 -08:00
block Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus 2008-12-30 17:37:25 -08:00
bluetooth Bluetooth: Enable per-module dynamic debug messages 2008-11-30 12:17:28 +01:00
cdrom cdrom: reduce stack usage of mmc_ioctl_dvd_read_struct 2008-12-29 08:28:43 +01:00
char mm: make vread() and vwrite() declaration 2009-01-06 15:59:05 -08:00
clocksource Merge branch 'cpus4096-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-01-02 11:44:09 -08:00
connector
cpufreq [CPUFREQ] Fix on resume, now preserves user policy min/max. 2008-12-05 15:20:11 -05:00
cpuidle
crypto crypto: talitos - Ack done interrupt in isr instead of tasklet 2008-12-25 11:02:33 +11:00
dca
dio
dma async_xor: dma_map destination DMA_BIDIRECTIONAL 2008-12-08 13:46:00 -07:00
edac Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 2008-12-28 16:54:33 -08:00
eisa
firewire firewire: fw-ohci: fix IOMMU resource exhaustion 2008-12-10 12:45:34 +01:00
firmware DMI: add dmi_match 2008-12-29 07:39:34 -05:00
gpio
gpu Check fops_get() return value 2009-01-06 15:59:11 -08:00
hid Merge branch 'upstream-fixes' into for-next 2009-01-04 01:04:09 +01:00
hwmon hwmon: applesmc: make applesmc load automatically on startup 2008-12-01 19:55:24 -08:00
i2c Merge branch 'for-next' of git://git.o-hand.com/linux-mfd 2009-01-05 19:04:09 -08:00
ide ide-atapi: start dma in a drive-specific way 2009-01-02 16:12:56 +01:00
idle
ieee1394 ieee1394: add quirk fix for Freecom HDD 2008-12-14 01:13:13 +01:00
infiniband zero i_uid/i_gid on inode allocation 2009-01-05 11:54:28 -05:00
input Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2008-12-30 17:36:49 -08:00
isdn Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2009-01-05 18:44:59 -08:00
leds
lguest Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask into merge-rr-cpumask 2009-01-03 18:53:31 +01:00
macintosh Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 2008-12-28 16:54:33 -08:00
mca
md dm snapshot: extend exception store functions 2009-01-06 03:05:19 +00:00
media Check fops_get() return value 2009-01-06 15:59:11 -08:00
memstick
message i2o: Update my address 2009-01-05 18:28:04 -08:00
mfd mfd: Fix section mismatch in da903x 2009-01-04 15:31:49 +01:00
misc pci: use pci_ioremap_bar() in drivers/misc 2009-01-06 15:59:10 -08:00
mmc Merge branch 'master' of ../mmc 2008-12-31 19:56:05 +01:00
mtd Merge branch 'linux-next' of git://git.infradead.org/~dedekind/ubi-2.6 2009-01-02 15:57:26 -08:00
net igb: fix anoying type mismatch warning on rx/tx queue sizing 2009-01-05 18:47:12 -08:00
nubus
of of/gpio: Implement of_gpio_count() 2008-12-21 14:21:14 +11:00
oprofile zero i_uid/i_gid on inode allocation 2009-01-05 11:54:28 -05:00
parisc Merge branch 'cpus4096-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-01-02 11:44:09 -08:00
parport parport_serial: fix array overflow 2008-12-01 19:55:24 -08:00
pci Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu 2009-01-03 12:03:52 -08:00
pcmcia Merge branch 'mxc-pu-imxfb' of git://pasiphae.extern.pengutronix.de/git/imx/linux-2.6 into devel 2008-12-17 20:04:45 +00:00
pnp percpu: fix percpu accessors to potentially !cpu_possible() cpus: pnpbios 2009-01-01 10:12:14 +10:30
power power_supply: Add Dialog DA9030 battery charger driver 2009-01-04 12:17:41 +01:00
ps3
rapidio rapidio: struct device - replace bus_id with dev_name(), dev_set_name() 2008-12-16 15:53:41 +11:00
regulator mfd: Support configurable numbers of DCDCs and ISINKs on WM8350 2009-01-04 12:17:42 +01:00
rtc rtc: add alarm/update irq interfaces 2009-01-04 13:33:20 -08:00
s390 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2009-01-05 18:44:59 -08:00
sbus Revert "of_platform_driver noise on sparce" 2008-12-01 07:55:14 -08:00
scsi remove ide-scsi 2009-01-02 16:12:51 +01:00
serial serial_8250: support for Sealevel Systems Model 7803 COMM+8 2009-01-02 10:19:44 -08:00
sh sh: maple: Do not pass SLAB_POISON to kmem_cache_create() 2008-12-16 16:40:32 +09:00
sn
spi Merge git://git.marvell.com/orion into devel 2008-12-13 09:12:51 +00:00
ssb
staging Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 2008-12-28 12:49:40 -08:00
tc
telephony
thermal
uio
usb add a vfs_fsync helper 2009-01-05 11:54:28 -05:00
uwb Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-upstream 2009-01-02 13:17:13 +00:00
video viafb: fix crashes due to 4k stack overflow 2009-01-04 13:33:20 -08:00
virtio virtio: add PCI device release() function 2008-12-30 09:26:10 +10:30
w1 w1: fix slave selection on big-endian systems 2008-12-23 15:58:21 -08:00
watchdog [WATCHDOG] Add support for the WM8350 watchdog 2008-12-31 16:12:54 +00:00
xen Merge branch 'cpus4096-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-01-02 11:44:09 -08:00
zorro
Kconfig
Makefile