linux_old1/drivers/media/video
Trent Piepho e42af83f48 V4L/DVB (5887): zr36067: Fix poll() operation
During uncompressed capture, the poll() function was looking the wrong frame.
It was using the frame the driver was going to capture into next (pend_tail),
when it should have been looking at the next frame to be de-queued with
DQBUF/SYNC (sync_tail).

It also wasn't looking in the right spot.  It was looking at the file handle's
copy of the buffer status, rather than the driver core copy.  The interrupt
routine marks frames as done in the driver core copy, the file handle copy
isn't updated.  So even if poll() looked at the right frame, it would never
see it transition to done and return POLLIN.

The compressed capture code has this same problem, looking in fh->jpg_buffers
when it should have used zr->jpg_buffers.

There was some logic to detect when there was no current capture in process
nor any frames queued and try to return an error, which ends up being a bad
idea.  It's possible to call select() from one thread while no capture is in
process, or no frames queued, and then start a capture or queue frames from
another thread.

The buffer state variables are protected by a spin lock, which the code wasn't
acquiring.  That is fixed too.

Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Acked-by: Ronald S. Bultje <rbultje@ronald.bitfreak.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2007-07-30 16:26:24 -03:00
..
bt8xx V4L/DVB (5861): Use msecs_to_jiffies instead of HZ on bttv, cx88 and saa7134 2007-07-20 17:35:51 -03:00
cpia2 some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
cx88 V4L/DVB (5871): Conexant 2388x: check for kthread_run 2007-07-20 17:35:55 -03:00
cx25840 V4L/DVB (5576): Improve / fix support for PAL-60 in cx25840 2007-05-09 10:12:34 -03:00
em28xx V4L/DVB (5640): Fix: em28xx shouldn't be selecting VIDEO_BUF 2007-05-22 16:00:12 -03:00
et61x251 V4L/DVB (5766): ET61x251 driver updates 2007-07-18 14:24:08 -03:00
ivtv V4L/DVB (5866): ivtv: fix DMA timeout when capturing VBI + another stream 2007-07-20 17:35:52 -03:00
ovcamchip i2c: Cleanup the includes of <linux/i2c.h> 2007-05-01 23:26:29 +02:00
pvrusb2 V4L/DVB (5586): Use menuconfig objects II - V4L 2007-05-09 10:12:39 -03:00
pwc V4L/DVB (5809): Use mutex instead of semaphore in Philips webcam driver 2007-07-18 14:24:28 -03:00
saa7134 V4L/DVB (5861): Use msecs_to_jiffies instead of HZ on bttv, cx88 and saa7134 2007-07-20 17:35:51 -03:00
sn9c102 V4L/DVB (5765): SN9C1xx driver updates 2007-07-18 14:24:07 -03:00
usbvideo some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
usbvision V4L/DVB (5826): Usbvision: video mux cleanup 2007-07-18 14:24:38 -03:00
zc0301 V4L/DVB (5767): ZC0301 driver updates 2007-07-18 14:24:09 -03:00
Kconfig more VIRT_TO_BUS dependencies 2007-07-26 11:11:56 -07:00
Makefile V4L/DVB (5813): TUNER_TEA5761 kconfig fixes 2007-07-18 14:24:33 -03:00
adv7170.c V4L/DVB (5819): Cleanup: reorder some includes 2007-07-18 14:24:35 -03:00
adv7175.c V4L/DVB (5819): Cleanup: reorder some includes 2007-07-18 14:24:35 -03:00
arv.c [PATCH] mark struct file_operations const 4 2007-02-12 09:48:45 -08:00
bt819.c V4L/DVB (5819): Cleanup: reorder some includes 2007-07-18 14:24:35 -03:00
bt856.c V4L/DVB (5819): Cleanup: reorder some includes 2007-07-18 14:24:35 -03:00
bt866.c V4L/DVB (5858): Use msecs_to_jiffies instead of HZ on media/video I2C drivers 2007-07-20 17:35:49 -03:00
btcx-risc.c
btcx-risc.h
bw-qcam.c [PATCH] mark struct file_operations const 4 2007-02-12 09:48:45 -08:00
bw-qcam.h
c-qcam.c V4L/DVB (5860): Use msecs_to_jiffies instead of HZ on some webcam drivers 2007-07-20 17:35:50 -03:00
cafe_ccic-regs.h V4L/DVB (5690): Cafe_ccic: Properly power down the sensor 2007-05-22 16:16:27 -03:00
cafe_ccic.c V4L/DVB (5690): Cafe_ccic: Properly power down the sensor 2007-05-22 16:16:27 -03:00
compat_ioctl32.c [PATCH] struct path: convert v4l 2006-12-08 08:28:50 -08:00
cpia.c V4L/DVB (5076): Cpia.c: buffer overflow 2007-02-21 13:34:35 -02:00
cpia.h header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
cpia_pp.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
cpia_usb.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
cs53l32a.c V4L/DVB (5355): Add VIDIOC_G_CHIP_IDENT to various i2c modules 2007-04-27 15:43:50 -03:00
cs8420.h
cx2341x.c i2c: Cleanup the includes of <linux/i2c.h> 2007-05-01 23:26:29 +02:00
dabfirmware.h
dabusb.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
dabusb.h
dpc7146.c
font.h
hexium_gemini.c
hexium_orion.c
ibmmpeg2.h
indycam.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
indycam.h
ir-kbd-i2c.c V4L/DVB (5786): Ir-kbd-i2c: add support for Hauppauge HVR1300 remote 2007-07-18 14:24:20 -03:00
ks0127.c V4L/DVB (5029): Ks0127 status flags 2007-01-15 16:25:52 -02:00
ks0127.h V4L/DVB (3916): AverMedia 6 Eyes AVS6EYES support 2006-06-25 01:59:28 -03:00
meye.c PCI: Change all drivers to use pci_device->revision 2007-07-11 16:02:10 -07:00
meye.h meye: make meye use sony-laptop instead of sonypi 2007-04-28 22:06:02 -04:00
msp3400-driver.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
msp3400-driver.h V4L/DVB (5355): Add VIDIOC_G_CHIP_IDENT to various i2c modules 2007-04-27 15:43:50 -03:00
msp3400-kthreads.c Freezer: make kernel threads nonfreezable by default 2007-07-17 10:23:02 -07:00
mt20xx.c V4L/DVB (5793): Tuner: remove hardware-specific info from public header 2007-07-18 14:24:23 -03:00
mxb.c V4L/DVB (4894): Mxb: fix to load the proper i2c modules 2006-12-10 09:05:26 -02:00
mxb.h
ov511.c [PATCH] mark struct file_operations const 4 2007-02-12 09:48:45 -08:00
ov511.h header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
ov7670.c V4L/DVB (5739): Replace C code with calls to ARRAY_SIZE macro. 2007-07-18 14:23:52 -03:00
planb.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
planb.h V4L/DVB (5551): Plan-b: header change 2007-04-27 15:45:53 -03:00
pms.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
saa711x.c PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
saa711x_regs.h V4L/DVB (4551): Added register aliases for saa711x registers, instead of using reg numbers 2006-09-26 12:30:34 -03:00
saa5246a.c V4L/DVB (5197): Convert to generic boolean-values 2007-02-21 13:35:16 -02:00
saa5246a.h V4L/DVB (5197): Convert to generic boolean-values 2007-02-21 13:35:16 -02:00
saa5249.c V4L/DVB (5858): Use msecs_to_jiffies instead of HZ on media/video I2C drivers 2007-07-20 17:35:49 -03:00
saa6588.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2006-12-05 14:37:56 +00:00
saa7110.c V4L/DVB (5858): Use msecs_to_jiffies instead of HZ on media/video I2C drivers 2007-07-20 17:35:49 -03:00
saa7111.c V4L/DVB (5819): Cleanup: reorder some includes 2007-07-18 14:24:35 -03:00
saa7114.c V4L/DVB (5819): Cleanup: reorder some includes 2007-07-18 14:24:35 -03:00
saa7115.c V4L/DVB (5414): Add missing kfree in early exit of saa7115. 2007-04-27 15:44:31 -03:00
saa7121.h
saa7127.c V4L/DVB (5306): Add support for VIDIOC_G_CHIP_IDENT 2007-04-27 15:43:27 -03:00
saa7146.h
saa7146reg.h
saa7185.c V4L/DVB (5819): Cleanup: reorder some includes 2007-07-18 14:24:35 -03:00
saa7191.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
saa7191.h
saa7196.h
se401.c V4L/DVB (5490): Drivers/media/video/se401.c: check kmalloc() return value. 2007-04-27 15:45:21 -03:00
se401.h header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
stradis.c V4L/DVB (5831): stradis: use ARRAY_SIZE 2007-07-18 14:24:42 -03:00
stv680.c V4L/DVB (5790): Fix error handling for stv680 2007-07-18 14:24:21 -03:00
stv680.h
tda7432.c V4L/DVB (5492): Remove useless includes of i2c-algo-bit.h 2007-04-27 15:45:23 -03:00
tda8290.c V4L/DVB (5793): Tuner: remove hardware-specific info from public header 2007-07-18 14:24:23 -03:00
tda9840.c
tda9840.h
tda9875.c V4L/DVB (5492): Remove useless includes of i2c-algo-bit.h 2007-04-27 15:45:23 -03:00
tda9887.c V4L/DVB (5793): Tuner: remove hardware-specific info from public header 2007-07-18 14:24:23 -03:00
tea5761.c V4L/DVB (5793): Tuner: remove hardware-specific info from public header 2007-07-18 14:24:23 -03:00
tea5767.c V4L/DVB (5793): Tuner: remove hardware-specific info from public header 2007-07-18 14:24:23 -03:00
tea6415c.c
tea6415c.h
tea6420.c
tea6420.h
tlv320aic23b.c V4L/DVB (4048): Add support for the Texas Instruments TLV320AIC23B audio codec 2006-06-25 02:05:00 -03:00
tuner-3036.c V4L/DVB (4068): Removed all references to kernel stuff from videodev.h and videodev2.h 2006-06-25 02:05:05 -03:00
tuner-core.c V4L/DVB (5793): Tuner: remove hardware-specific info from public header 2007-07-18 14:24:23 -03:00
tuner-driver.h V4L/DVB (5793): Tuner: remove hardware-specific info from public header 2007-07-18 14:24:23 -03:00
tuner-simple.c V4L/DVB (5793): Tuner: remove hardware-specific info from public header 2007-07-18 14:24:23 -03:00
tuner-types.c V4L/DVB (5801): Tuner: update FCV1236D ranges to match the datasheet 2007-07-18 14:24:25 -03:00
tvaudio.c V4L/DVB (5858): Use msecs_to_jiffies instead of HZ on media/video I2C drivers 2007-07-20 17:35:49 -03:00
tveeprom.c V4L/DVB (5841): tveeprom: add support for Philips FQ1216LME MK3 tuner. 2007-07-18 14:24:46 -03:00
tvmixer.c V4L/DVB (5028): Tvmixer module_put cleanup 2007-02-21 13:34:18 -02:00
tvp5150.c V4L/DVB (5739): Replace C code with calls to ARRAY_SIZE macro. 2007-07-18 14:23:52 -03:00
tvp5150_reg.h
upd64031a.c V4L/DVB (5355): Add VIDIOC_G_CHIP_IDENT to various i2c modules 2007-04-27 15:43:50 -03:00
upd64083.c V4L/DVB (5355): Add VIDIOC_G_CHIP_IDENT to various i2c modules 2007-04-27 15:43:50 -03:00
v4l1-compat.c V4L/DVB (5571): V4l1-compat: Make VIDIOCSPICT return errors in a useful way 2007-05-09 10:13:09 -03:00
v4l2-common.c V4L/DVB (5869): Add check for valid control ID to v4l2_ctrl_next. 2007-07-20 17:35:53 -03:00
video-buf-dvb.c Freezer: make kernel threads nonfreezable by default 2007-07-17 10:23:02 -07:00
video-buf.c V4L/DVB (5603): V4L: Prevent queueing queued buffers. 2007-05-09 10:12:56 -03:00
videocodec.c V4L/DVB (5489): Codec.c: check kmalloc() return value. 2007-04-27 15:45:20 -03:00
videocodec.h V4L/DVB (4269): Subject: videocodec: make 1-bit fields unsigned 2006-06-30 15:59:30 -03:00
videodev.c V4L/DVB (5617): V4L2: videodev, allow debugging 2007-05-09 10:13:04 -03:00
vino.c V4L/DVB (5860): Use msecs_to_jiffies instead of HZ on some webcam drivers 2007-07-20 17:35:50 -03:00
vino.h
vivi.c V4L/DVB (5811): Use mutex instead of semaphore in Virtual Video driver 2007-07-18 14:24:29 -03:00
vpx3220.c V4L/DVB (4515): Fixed module name, since it is, in fact, a decoder. 2006-09-26 12:30:32 -03:00
w9966.c [PATCH] mark struct file_operations const 4 2007-02-12 09:48:45 -08:00
w9968cf.c i2c: Declare more i2c_adapter parent devices 2007-02-13 22:09:03 +01:00
w9968cf.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
w9968cf_decoder.h
w9968cf_vpp.h
wm8739.c V4L/DVB (5880): wm8775/wm8739: Fix memory leak when unloading module 2007-07-20 17:35:57 -03:00
wm8775.c V4L/DVB (5880): wm8775/wm8739: Fix memory leak when unloading module 2007-07-20 17:35:57 -03:00
zoran.h V4L/DVB (4605): Fixes an issue with V4L1 and make headers-install 2006-09-10 13:45:55 -03:00
zoran_card.c i2c: Declare more i2c_adapter parent devices 2007-02-13 22:09:03 +01:00
zoran_card.h
zoran_device.c V4L/DVB (4964): VIDEO_PALETTE_YUYV and VIDEO_PALETTE_YUV422 are the same palette 2006-12-27 14:18:50 -02:00
zoran_device.h IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
zoran_driver.c V4L/DVB (5887): zr36067: Fix poll() operation 2007-07-30 16:26:24 -03:00
zoran_procfs.c [PATCH] mark struct file_operations const 4 2007-02-12 09:48:45 -08:00
zoran_procfs.h
zr364xx.c V4L/DVB (5792): Zr364xx: add support for Trust Powerc@m 970Z 2007-07-18 14:24:23 -03:00
zr36016.c
zr36016.h
zr36050.c
zr36050.h
zr36057.h
zr36060.c
zr36060.h