linux_dsm_epyc7002/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
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
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
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
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
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
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
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
Kconfig more VIRT_TO_BUS dependencies 2007-07-26 11:11:56 -07:00
ks0127.c
ks0127.h
Makefile V4L/DVB (5813): TUNER_TEA5761 kconfig fixes 2007-07-18 14:24:33 -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
mxb.h
ov511.c
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
saa711x_regs.h
saa711x.c PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07: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
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
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
tuner-3036.c
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_reg.h
tvp5150.c V4L/DVB (5739): Replace C code with calls to ARRAY_SIZE macro. 2007-07-18 14:23:52 -03:00
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
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
w9966.c
w9968cf_decoder.h
w9968cf_vpp.h
w9968cf.c
w9968cf.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_card.c
zoran_card.h
zoran_device.c
zoran_device.h
zoran_driver.c V4L/DVB (5887): zr36067: Fix poll() operation 2007-07-30 16:26:24 -03:00
zoran_procfs.c
zoran_procfs.h
zoran.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