linux/drivers/media/test-drivers/vivid
Hans Verkuil c2d1a2130c media: vivid: check for vb2_is_busy() when toggling caps
The vivid_update_format_cap/out() functions must only be called if the
capture/output queue are not busy. But for the controls that select
the CROP/COMPOSE/SCALE capability that is not checked.

Only when streaming starts will they be set to 'grabbed' and it is
impossible to change the control, but between REQBUFS and STREAMON you
are still allowed to set these controls. Since vivid_update_format_cap/out
will change the format, this can cause unexpected results.

Besides adding these checks, also add a WARN_ON in
vivid_update_format_cap/out() if the queue is busy.

I'm 90% certain that this is the cause of this syzbot bug:

https://syzkaller.appspot.com/bug?extid=dac8f5eaa46837e97b89

But since we never have reproducers, it is hard to be certain. In any case,
these checks are needed regardless.

Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Fixes: 73c3f48230 ("[media] vivid: add the control handling code")
Cc: stable@vger.kernel.org
Reported-by: syzbot+dac8f5eaa46837e97b89@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=dac8f5eaa46837e97b89
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
2026-05-20 16:00:40 +02:00
..
Kconfig media: vivid: fix FB dependency 2025-04-07 08:10:38 +02:00
Makefile media: vivid: Introduce VIDEO_VIVID_OSD 2025-03-06 17:28:33 +01:00
vivid-cec.c media: vivid: fix disappearing <Vendor Command With ID> messages 2025-09-09 16:12:56 +02:00
vivid-cec.h media: vivid: add signal-free time for cec message xfer 2021-09-30 10:07:55 +02:00
vivid-core.c media: vivid: fix cleanup bugs in vivid_init() 2026-05-05 16:57:03 +02:00
vivid-core.h media: vivid: Introduce VIDEO_VIVID_OSD 2025-03-06 17:28:33 +01:00
vivid-ctrls.c media: vivid: check for vb2_is_busy() when toggling caps 2026-05-20 16:00:40 +02:00
vivid-ctrls.h
vivid-kthread-cap.c media: vivid: use (t,l)/wxh format for rectangle 2025-04-30 08:16:06 +02:00
vivid-kthread-cap.h
vivid-kthread-out.c media: test-drivers: vivid: don't call schedule in loop 2025-02-18 08:11:36 +01:00
vivid-kthread-out.h
vivid-kthread-touch.c media: test-drivers: vivid: don't call schedule in loop 2025-02-18 08:11:36 +01:00
vivid-kthread-touch.h
vivid-meta-cap.c media: test-drivers: drop vb2_ops_wait_prepare/finish 2024-10-28 09:19:49 +01:00
vivid-meta-cap.h
vivid-meta-out.c media: test-drivers: drop vb2_ops_wait_prepare/finish 2024-10-28 09:19:49 +01:00
vivid-meta-out.h
vivid-osd.c media: vivid: Move all fb_info references into vivid-osd 2025-03-06 17:28:32 +01:00
vivid-osd.h media: vivid: Introduce VIDEO_VIVID_OSD 2025-03-06 17:28:33 +01:00
vivid-radio-common.c
vivid-radio-common.h
vivid-radio-rx.c media: test-drivers: Rename second ioctl handlers argument to 'void *priv' 2025-08-13 08:33:58 +02:00
vivid-radio-rx.h media: test-drivers: Rename second ioctl handlers argument to 'void *priv' 2025-08-13 08:33:58 +02:00
vivid-radio-tx.c media: test-drivers: Rename second ioctl handlers argument to 'void *priv' 2025-08-13 08:33:58 +02:00
vivid-radio-tx.h media: test-drivers: Rename second ioctl handlers argument to 'void *priv' 2025-08-13 08:33:58 +02:00
vivid-rds-gen.c media: vivid: avoid integer overflow 2023-09-27 10:47:22 +02:00
vivid-rds-gen.h
vivid-sdr-cap.c media: test-drivers: Rename second ioctl handlers argument to 'void *priv' 2025-08-13 08:33:58 +02:00
vivid-sdr-cap.h media: test-drivers: Rename second ioctl handlers argument to 'void *priv' 2025-08-13 08:33:58 +02:00
vivid-touch-cap.c media: test-drivers: drop vb2_ops_wait_prepare/finish 2024-10-28 09:19:49 +01:00
vivid-touch-cap.h
vivid-vbi-cap.c media: test-drivers: Rename second ioctl handlers argument to 'void *priv' 2025-08-13 08:33:58 +02:00
vivid-vbi-cap.h media: test-drivers: Rename second ioctl handlers argument to 'void *priv' 2025-08-13 08:33:58 +02:00
vivid-vbi-gen.c media: media/test_drivers: Replace open-coded parity calculation with parity8() 2025-06-17 10:51:35 +02:00
vivid-vbi-gen.h
vivid-vbi-out.c media: test-drivers: Rename second ioctl handlers argument to 'void *priv' 2025-08-13 08:33:58 +02:00
vivid-vbi-out.h media: test-drivers: Rename second ioctl handlers argument to 'void *priv' 2025-08-13 08:33:58 +02:00
vivid-vid-cap.c media: vivid: check for vb2_is_busy() when toggling caps 2026-05-20 16:00:40 +02:00
vivid-vid-cap.h media: vivid: add vivid_update_reduced_fps() 2026-05-20 16:00:39 +02:00
vivid-vid-common.c media: test-drivers: Rename second ioctl handlers argument to 'void *priv' 2025-08-13 08:33:58 +02:00
vivid-vid-common.h media: test-drivers: Rename second ioctl handlers argument to 'void *priv' 2025-08-13 08:33:58 +02:00
vivid-vid-out.c media: vivid: check for vb2_is_busy() when toggling caps 2026-05-20 16:00:40 +02:00
vivid-vid-out.h media: test-drivers: Rename second ioctl handlers argument to 'void *priv' 2025-08-13 08:33:58 +02:00