kernel-fxtec-pro1x/drivers
Jesper Juhl bafefc0cf8 V4L/DVB (4154): Fix use-after-free bug in cpia2 driver
The coverity checker detected a use-after-free error in
drivers/media/video/cpia2/cpia2_v4l.c::cpia2_close() (coverity
error #1281).
What happens is that we lock cam->busy_lock, then proceed to free
resources, and in the case of (--cam->open_count == 0) we finish off by
doing a kfree(cam) and then at the end of the function we do a
mutex_unlock(&cam->busy_lock) which will explode since it'll dereference
the free'd `cam' :
...
mutex_lock(&cam->busy_lock);
...
if (--cam->open_count == 0) {
    ...
    if (!cam->present) {
        video_unregister_device(dev);
        kfree(cam);
    }
}
mutex_unlock(&cam->busy_lock);   <--- PROBLEM, cam no longer around.
...
Since this only happens in the case of open_count going down to zero I
don't see a problem with just releasing the mutex after unregistering the
device and just before the kfree().  In this case there is nothing around
that we can race against; we are in the release method, open_count is zero,
(!cam->present) and the device has just been unregistered, so letting go of
the mutex at this point looks safe to me.
Patch below to implement that solution.
Acked-by: Randy Dunlap <rdunlap@xenotime.net>

Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2006-06-25 02:05:14 -03:00
..
acorn
acpi [PATCH] fix typo in acpi video brightness changes. 2006-06-23 21:37:34 -07:00
amba
atm [SPARC]: Kill __irq_itoa(). 2006-06-20 01:21:29 -07:00
base Enable minimal per-device resume tracing 2006-06-24 14:47:59 -07:00
block [PATCH] drivers/block/loop.c: don't return garbage if LOOP_SET_STATUS not called 2006-06-23 07:43:09 -07:00
bluetooth
cdrom Merge git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 2006-06-22 22:11:30 -07:00
char Merge branch 'drm-patches' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 2006-06-24 14:48:43 -07:00
connector [PATCH] connector-exports 2006-06-23 07:43:06 -07:00
cpufreq [PATCH] cpufreq build fix 2006-06-23 08:47:27 -07:00
crypto
dio
dma [I/OAT]: Do not use for_each_cpu(). 2006-06-17 21:25:58 -07:00
edac
eisa
fc4 [SPARC]: Kill __irq_itoa(). 2006-06-20 01:21:29 -07:00
firmware
hwmon [PATCH] hwmon-vid: Add support for Intel Core and Conroe 2006-06-22 11:10:36 -07:00
i2c Merge git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 2006-06-22 22:11:30 -07:00
ide Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev 2006-06-23 15:58:44 -07:00
ieee1394 [PATCH] frv: ieee1394 is borken on frv 2006-06-23 07:42:55 -07:00
infiniband [PATCH] VFS: Permit filesystem to override root dentry on mount 2006-06-23 07:42:45 -07:00
input [SPARC64]: Add of_device layer and make ebus/isa use it. 2006-06-23 23:15:43 -07:00
isdn [PATCH] ISDN: correctly handle isdn_writebuf_stub() errors 2006-06-23 07:43:04 -07:00
leds [PATCH] leds: Amstrad Delta LED support 2006-06-23 07:43:05 -07:00
macintosh [PATCH] m68k: windfarm is powerpc-only, don't do it on m68k macs 2006-06-23 07:43:01 -07:00
mca
md [PATCH] drivers/md/raid6algos.c: fix a NULL dereference 2006-06-23 07:43:08 -07:00
media V4L/DVB (4154): Fix use-after-free bug in cpia2 driver 2006-06-25 02:05:14 -03:00
message Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2006-06-21 11:18:25 -07:00
mfd
misc [PATCH] VFS: Permit filesystem to override root dentry on mount 2006-06-23 07:42:45 -07:00
mmc [ARM] 3565/1: AT91RM9200 MMC update 2006-06-19 13:06:05 +01:00
mtd [MTD] NAND: Fix breakage all over the place 2006-06-20 20:31:24 +01:00
net [NET] sunhme: Kill useless loop over sdevs in quattro_sbus_find(). 2006-06-23 23:16:11 -07:00
nubus
oprofile [PATCH] VFS: Permit filesystem to override root dentry on mount 2006-06-23 07:42:45 -07:00
parisc
parport [PARPORT] sunbpp: Convert to new SBUS device framework. 2006-06-23 23:16:19 -07:00
pci [PATCH] PCI: nVidia quirk to make AER PCI-E extended capability visible 2006-06-21 12:00:01 -07:00
pcmcia [ARM] Fix badge4 build error 2006-06-19 15:37:31 +01:00
pnp Pull pnpacpi into release branch 2006-06-15 15:36:43 -04:00
rapidio
rtc [PATCH] m48t86: ia64 build fix 2006-06-05 12:29:17 -07:00
s390 [NET]: Merge TSO/UFO fields in sk_buff 2006-06-23 02:07:29 -07:00
sbus [SBUS]: Rewrite and plug into of_device framework. 2006-06-23 23:15:50 -07:00
scsi [SCSI] qlogicpti: Convert to new SBUS device framework. 2006-06-23 23:16:15 -07:00
serial Merge master.kernel.org:/home/rmk/linux-2.6-arm 2006-06-24 17:48:14 -07:00
sh
sn [PATCH] SGI IOC4: Detect IO card variant 2006-06-23 07:43:07 -07:00
spi [PATCH] s3c24xx: fix spi driver with CONFIG_PM 2006-05-26 11:55:46 -07:00
tc
telephony
usb Revert "[PATCH] usb: drivers/usb/core/devio.c dereferences a userspace pointer" 2006-06-24 17:47:09 -07:00
video Merge branch 'intelfb-patches' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/intelfb-2.6 2006-06-24 14:48:35 -07:00
w1 [PATCH] connector-exports 2006-06-23 07:43:06 -07:00
zorro
Kconfig [I/OAT]: DMA memcpy subsystem 2006-06-17 21:18:43 -07:00
Makefile [I/OAT]: DMA memcpy subsystem 2006-06-17 21:18:43 -07:00