linux/drivers/media/video
Arjan van de Ven a17898737e V4L/DVB (8108): Fix open/close race in saa7134
The saa7134 driver uses a (non-atomic) variable in an attempt to
only allow one opener of the device (how it deals with sending
the fd over unix sockets I don't know).

Unfortunately, the release function first decrements this variable,
and THEN goes on to disable more of the device. This allows for
a race where another opener of the device comes in after the decrement of
the variable, configures the hardware just to then see the hardware
be disabled by the rest of the release function.

This patch makes the release function use the same lock as the open
function to protect the hardware as well as the variable (which now
at least has some locking to protect it).

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-06-26 15:58:59 -03:00
..
au0828 V4L/DVB (8043): au0828: add support for additional USB device id's 2008-06-26 15:58:52 -03:00
bt8xx V4L/DVB (7967): bt8xx: unaligned access 2008-06-05 06:35:52 -03:00
cpia2 V4L/DVB (7519): media/video/cpia2 replace remaining __FUNCTION__ occurrences 2008-04-24 14:07:59 -03:00
cx18 V4L/DVB (8069): cx18: Fix S-Video and Compsite inputs for the Yuan MPC718 and enable card entry 2008-06-26 15:58:55 -03:00
cx88 V4L/DVB (8026): Avoids an OOPS if dev struct can't be successfully recovered 2008-06-26 15:58:47 -03:00
cx23885 V4L/DVB (7965): annotate bcx_riscmem 2008-06-05 06:35:51 -03:00
cx25840 V4L/DVB (8007): cx18/cx25840: the S-Video LUMA input can use all In1-In8 inputs 2008-06-26 15:58:42 -03:00
em28xx V4L/DVB (8026): Avoids an OOPS if dev struct can't be successfully recovered 2008-06-26 15:58:47 -03:00
et61x251 byteorder: don't directly include linux/byteorder/generic.h 2008-05-16 12:01:45 -07:00
ivtv V4L/DVB (7963): ivtv: trivial annotations 2008-06-05 06:35:49 -03:00
ovcamchip V4L/DVB (7524): media/video/ovcamchip replace remaining __FUNCTION__ occurrences 2008-04-24 14:07:59 -03:00
pvrusb2 V4L/DVB (7900): pvrusb: Fix Kconfig if DVB=m V4L_core=y 2008-05-14 02:56:47 -03:00
pwc V4L/DVB (7558): videobuf: Improve command output for debug purposes 2008-04-24 14:08:48 -03:00
saa7134 V4L/DVB (8108): Fix open/close race in saa7134 2008-06-26 15:58:59 -03:00
sn9c102 byteorder: don't directly include linux/byteorder/generic.h 2008-05-16 12:01:45 -07:00
usbvideo V4L/DVB (7970): mix trivial endianness annotations 2008-06-05 06:35:52 -03:00
usbvision V4L/DVB (7846): Re-creates VIDEO_TUNER 2008-05-14 02:54:07 -03:00
zc0301 byteorder: don't directly include linux/byteorder/generic.h 2008-05-16 12:01:45 -07:00
adv7170.c V4L/DVB (7094): static memory 2008-04-24 13:42:20 -03:00
adv7175.c V4L/DVB (7094): static memory 2008-04-24 13:42:20 -03:00
arv.c V4L/DVB (7402): add macro validation for v4l_compat_ioctl32 2008-04-24 14:07:53 -03:00
bt819.c V4L/DVB (7094): static memory 2008-04-24 13:42:20 -03:00
bt856.c V4L/DVB (7094): static memory 2008-04-24 13:42:20 -03:00
bt866.c V4L/DVB (6819): i2c: fix drivers/media/video/bt866.c 2007-12-13 17:58:05 -02:00
btcx-risc.c V4L/DVB (7965): annotate bcx_riscmem 2008-06-05 06:35:51 -03:00
btcx-risc.h V4L/DVB (7965): annotate bcx_riscmem 2008-06-05 06:35:51 -03:00
bw-qcam.c V4L/DVB (7402): add macro validation for v4l_compat_ioctl32 2008-04-24 14:07:53 -03:00
bw-qcam.h
c-qcam.c V4L/DVB (7591): drivers/media/video: use time_before, time_before_eq, etc 2008-04-24 14:09:40 -03:00
cafe_ccic-regs.h
cafe_ccic.c V4L/DVB (7094): static memory 2008-04-24 13:42:20 -03:00
compat_ioctl32.c V4L/DVB (5989): V4L: Add additional ioctls to compat_ioctl32 2007-10-09 22:04:45 -03:00
cpia_pp.c
cpia_usb.c V4L/DVB (7518): media/video/ replace remaining __FUNCTION__ occurrences 2008-04-24 14:07:59 -03:00
cpia.c V4L/DVB (7402): add macro validation for v4l_compat_ioctl32 2008-04-24 14:07:53 -03:00
cpia.h V4L/DVB (7518): media/video/ replace remaining __FUNCTION__ occurrences 2008-04-24 14:07:59 -03:00
cs53l32a.c i2c: Convert remaining new-style drivers to use module aliasing 2008-05-18 20:49:40 +02:00
cs5345.c i2c: Convert remaining new-style drivers to use module aliasing 2008-05-18 20:49:40 +02:00
cs8420.h
cx2341x.c V4L/DVB (6861): cx2341x: command argument should be u32 instead of int 2008-01-25 19:04:04 -02:00
dabfirmware.h V4L/DVB (7248): dabfirmware.h add missing license 2008-04-24 14:07:44 -03:00
dabusb.c V4L/DVB (7274): dabusb: fix shadowed variable warning in dabusb.c 2008-04-24 14:07:46 -03:00
dabusb.h
dpc7146.c V4L/DVB (7094): static memory 2008-04-24 13:42:20 -03:00
font.h
hexium_gemini.c V4L/DVB (7094): static memory 2008-04-24 13:42:20 -03:00
hexium_orion.c V4L/DVB (7094): static memory 2008-04-24 13:42:20 -03:00
ibmmpeg2.h
indycam.c drivers/media/: Spelling fixes 2008-02-03 17:18:59 +02:00
indycam.h
ir-kbd-i2c.c V4L/DVB (7751): ir-kbd-i2c: Save a temporary memory allocation in ir_probe 2008-04-26 09:29:58 -03:00
Kconfig missing dependencies on HAS_DMA 2008-05-21 16:55:59 -07:00
ks0127.c i2c: Use the driver model reference counting 2008-01-27 18:14:48 +01:00
ks0127.h
m52790.c i2c: Convert remaining new-style drivers to use module aliasing 2008-05-18 20:49:40 +02:00
Makefile V4L/DVB (7846): Re-creates VIDEO_TUNER 2008-05-14 02:54:07 -03:00
meye.c V4L/DVB (7666): meye: Replace meye_do_ioctl to use video_ioctl2 2008-04-24 14:09:45 -03:00
meye.h Convert files to UTF-8 and some cleanups 2007-10-19 23:21:04 +02:00
msp3400-driver.c i2c: Convert remaining new-style drivers to use module aliasing 2008-05-18 20:49:40 +02:00
msp3400-driver.h
msp3400-kthreads.c V4L/DVB (7343): msp3400: fix SECAM D/K handling 2008-04-24 14:07:49 -03:00
mt9m001.c V4L/DVB (7858): video: build fix for drivers/media/video/mt9v022.c 2008-05-14 02:54:10 -03:00
mt9v022.c V4L/DVB (7859): mt9v022: fix a copy-paste error in comment 2008-05-14 02:54:11 -03:00
mxb.c V4L/DVB (7094): static memory 2008-04-24 13:42:20 -03:00
mxb.h
ov511.c V4L/DVB (7641): V4L: ov511 - use usb_interface as parent, not usb_device 2008-04-24 14:09:44 -03:00
ov511.h V4L/DVB (7518): media/video/ replace remaining __FUNCTION__ occurrences 2008-04-24 14:07:59 -03:00
ov7670.c V4L/DVB (6079): Cleanup: remove linux/moduleparam.h from drivers/media files 2007-10-09 22:06:17 -03:00
planb.c V4L/DVB (6407): planb: fix obvious interrupt handling bugs 2007-11-04 21:41:20 -02:00
planb.h
pms.c V4L/DVB (7402): add macro validation for v4l_compat_ioctl32 2008-04-24 14:07:53 -03:00
pxa_camera.c V4L/DVB (8039): pxa-camera: fix platform_get_irq() error handling. 2008-06-26 15:58:50 -03:00
saa711x_regs.h
saa711x.c V4L/DVB (7094): static memory 2008-04-24 13:42:20 -03:00
saa717x.c i2c: Convert remaining new-style drivers to use module aliasing 2008-05-18 20:49:40 +02:00
saa5246a.c V4L/DVB (6684): Complement va_start() with va_end() + style fixes 2007-12-11 18:08:16 -02:00
saa5246a.h
saa5249.c V4L/DVB (7402): add macro validation for v4l_compat_ioctl32 2008-04-24 14:07:53 -03:00
saa6588.c V4L/DVB (7094): static memory 2008-04-24 13:42:20 -03:00
saa7110.c V4L/DVB (7094): static memory 2008-04-24 13:42:20 -03:00
saa7111.c V4L/DVB (7094): static memory 2008-04-24 13:42:20 -03:00
saa7114.c V4L/DVB (7094): static memory 2008-04-24 13:42:20 -03:00
saa7115.c i2c: Convert remaining new-style drivers to use module aliasing 2008-05-18 20:49:40 +02:00
saa7121.h
saa7127.c i2c: Convert remaining new-style drivers to use module aliasing 2008-05-18 20:49:40 +02:00
saa7146.h
saa7146reg.h
saa7185.c V4L/DVB (7094): static memory 2008-04-24 13:42:20 -03:00
saa7191.c
saa7191.h
saa7196.h
se401.c V4L/DVB (7518): media/video/ replace remaining __FUNCTION__ occurrences 2008-04-24 14:07:59 -03:00
se401.h
soc_camera.c V4L/DVB (8040): soc-camera: remove soc_camera_host_class class 2008-06-26 15:58:50 -03:00
stk-sensor.c V4L/DVB (7104): stk-sensor.c: make 2 functions static 2008-02-18 11:15:08 -03:00
stk-webcam.c V4L/DVB (7813): Fix compilation, when V4L1_COMPAT is disabled 2008-05-14 02:54:00 -03:00
stk-webcam.h V4L/DVB (7104): stk-sensor.c: make 2 functions static 2008-02-18 11:15:08 -03:00
stradis.c V4L/DVB (7402): add macro validation for v4l_compat_ioctl32 2008-04-24 14:07:53 -03:00
stv680.c V4L/DVB (7518): media/video/ replace remaining __FUNCTION__ occurrences 2008-04-24 14:07:59 -03:00
stv680.h
tcm825x.c i2c: Convert some more new-style drivers to use module aliasing 2008-05-11 20:37:06 +02:00
tcm825x.h V4L/DVB (6220): TCM825x: Add support for vidioc_int_g_ifparm call, small cleanups 2007-10-09 22:14:40 -03:00
tda7432.c V4L/DVB (6419): V4L2 port of tda7432 from V4L1 api 2008-01-25 19:01:00 -02:00
tda9840.c V4L/DVB (7518): media/video/ replace remaining __FUNCTION__ occurrences 2008-04-24 14:07:59 -03:00
tda9840.h
tda9875.c V4L/DVB (6420): V4L2 conversion for tda9875 from V4L1 API 2008-01-25 19:01:00 -02:00
tea6415c.c V4L/DVB (7518): media/video/ replace remaining __FUNCTION__ occurrences 2008-04-24 14:07:59 -03:00
tea6415c.h
tea6420.c V4L/DVB (7518): media/video/ replace remaining __FUNCTION__ occurrences 2008-04-24 14:07:59 -03:00
tea6420.h
tlv320aic23b.c i2c: Convert some more new-style drivers to use module aliasing 2008-05-11 20:37:06 +02:00
tuner-3036.c
tuner-core.c V4L/DVB (7905): check_v4l2 should return -EINVAL on error 2008-06-05 06:35:41 -03:00
tvaudio.c i2c: Convert some more new-style drivers to use module aliasing 2008-05-11 20:37:06 +02:00
tveeprom.c V4L/DVB (7895): tveeprom: update Hauppauge analog audio and video decoders 2008-05-14 02:56:46 -03:00
tvp5150_reg.h
tvp5150.c V4L/DVB (7094): static memory 2008-04-24 13:42:20 -03:00
upd64031a.c i2c: Convert remaining new-style drivers to use module aliasing 2008-05-18 20:49:40 +02:00
upd64083.c i2c: Convert remaining new-style drivers to use module aliasing 2008-05-18 20:49:40 +02:00
v4l1-compat.c V4L/DVB (7365): reduce stack usage of v4l1_compat_sync 2008-04-24 14:07:50 -03:00
v4l2-common.c i2c: Add support for device alias names 2008-04-29 23:11:39 +02:00
v4l2-int-device.c V4L/DVB (7485): v4l2-int-device.c: add MODULE_LICENSE 2008-04-01 19:35:47 -03:00
videobuf-core.c Fix a deadlock in the bttv driver 2008-05-20 10:12:26 -07:00
videobuf-dma-sg.c V4L/DVB (7566): videobuf-dvb: allow its usage with videobuf-vmalloc 2008-04-24 14:09:39 -03:00
videobuf-dvb.c V4L/DVB (7566): videobuf-dvb: allow its usage with videobuf-vmalloc 2008-04-24 14:09:39 -03:00
videobuf-vmalloc.c V4L/DVB (7566): videobuf-dvb: allow its usage with videobuf-vmalloc 2008-04-24 14:09:39 -03:00
videocodec.c V4L/DVB (7580): Fix concurrent read from /proc/videocodecs 2008-04-24 14:09:40 -03:00
videocodec.h
videodev.c V4L/DVB (8092): videodev: simplify and fix standard enumeration 2008-06-26 15:58:57 -03:00
vino.c mm: remove nopage 2008-04-28 08:58:18 -07:00
vino.h
vivi.c V4L/DVB (8100): V4L/vivi: fix possible memory leak in vivi_fillbuff 2008-06-26 15:58:58 -03:00
vp27smpx.c i2c: Convert remaining new-style drivers to use module aliasing 2008-05-18 20:49:40 +02:00
vpx3220.c V4L/DVB (7094): static memory 2008-04-24 13:42:20 -03:00
w9966.c V4L/DVB (7518): media/video/ replace remaining __FUNCTION__ occurrences 2008-04-24 14:07:59 -03:00
w9968cf_decoder.h
w9968cf_vpp.h
w9968cf.c V4L/DVB (7402): add macro validation for v4l_compat_ioctl32 2008-04-24 14:07:53 -03:00
w9968cf.h V4L/DVB (7518): media/video/ replace remaining __FUNCTION__ occurrences 2008-04-24 14:07:59 -03:00
wm8739.c i2c: Convert remaining new-style drivers to use module aliasing 2008-05-18 20:49:40 +02:00
wm8775.c i2c: Convert remaining new-style drivers to use module aliasing 2008-05-18 20:49:40 +02:00
zoran_card.c V4L/DVB (7094): static memory 2008-04-24 13:42:20 -03:00
zoran_card.h V4L/DVB (7479): proper prototype for zoran_device.c:zr36016_write() 2008-04-24 14:07:57 -03:00
zoran_device.c V4L/DVB (7968): zoran: endianness annotations 2008-06-05 06:35:52 -03:00
zoran_device.h
zoran_driver.c V4L/DVB (7968): zoran: endianness annotations 2008-06-05 06:35:52 -03:00
zoran_procfs.c drivers: use non-racy method for proc entries creation (2) 2008-04-29 08:06:22 -07:00
zoran_procfs.h
zoran.h V4L/DVB (7968): zoran: endianness annotations 2008-06-05 06:35:52 -03:00
zr364xx.c V4L/DVB (7094): static memory 2008-04-24 13:42:20 -03:00
zr36016.c V4L/DVB (7094): static memory 2008-04-24 13:42:20 -03:00
zr36016.h
zr36050.c V4L/DVB (7094): static memory 2008-04-24 13:42:20 -03:00
zr36050.h
zr36057.h
zr36060.c V4L/DVB (7094): static memory 2008-04-24 13:42:20 -03:00
zr36060.h