linux/drivers/media/common
Hans Verkuil d65842f712 media: vb2: add waiting_in_dqbuf flag
Calling VIDIOC_DQBUF can release the core serialization lock pointed to
by vb2_queue->lock if it has to wait for a new buffer to arrive.

However, if userspace dup()ped the video device filehandle, then it is
possible to read or call DQBUF from two filehandles at the same time.

It is also possible to call REQBUFS from one filehandle while the other
is waiting for a buffer. This will remove all the buffers and reallocate
new ones. Removing all the buffers isn't the problem here (that's already
handled correctly by DQBUF), but the reallocating part is: DQBUF isn't
aware that the buffers have changed.

This is fixed by setting a flag whenever the lock is released while waiting
for a buffer to arrive. And checking the flag where needed so we can return
-EBUSY.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Reported-by: Syzbot <syzbot+4180ff9ca6810b06c1e9@syzkaller.appspotmail.com>
Reviewed-by: Tomasz Figa <tfiga@chromium.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
2019-04-22 11:50:07 -04:00
..
b2c2 media: use strscpy() instead of strlcpy() 2018-09-11 13:32:17 -04:00
saa7146 media: common: fix several typos 2019-03-01 09:44:48 -05:00
siano media: Kconfig files: use the right help coding style 2019-03-20 06:47:51 -04:00
v4l2-tpg media: v4l2-tpg-core: Add support for 32-bit packed YUV formats (v2) 2019-02-18 14:31:23 -05:00
videobuf2 media: vb2: add waiting_in_dqbuf flag 2019-04-22 11:50:07 -04:00
btcx-risc.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cx2341x.c media: cx2341x: replace badly designed macros 2019-03-25 18:02:25 -04:00
cypress_firmware.c media: drivers: improve a size determination 2017-09-23 08:20:57 -04:00
cypress_firmware.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kconfig media: drivers/media/common/videobuf2: rename from videobuf 2018-01-23 08:05:02 -05:00
Makefile media: drivers/media/common/videobuf2: rename from videobuf 2018-01-23 08:05:02 -05:00
tveeprom.c [media] tveeprom: get rid of unused arg on tveeprom_hauppauge_analog() 2017-03-03 07:35:02 -03:00