linux/drivers/media
Ruslan Valiyev f0f5a1d705 media: vidtv: fix NULL pointer dereference in vidtv_mux_push_si
commit 7d8bf3d8f9 upstream.

syzbot reported a general protection fault in
vidtv_psi_ts_psi_write_into [1].

vidtv_mux_get_pid_ctx() can return NULL, but vidtv_mux_push_si() does
not check for this before dereferencing the returned pointer to access
the continuity counter. This leads to a general protection fault when
accessing a near-NULL address.

The root cause is that vidtv_mux_pid_ctx_init() does not check the
return value of vidtv_mux_create_pid_ctx_once() for PMT section PIDs.
If the allocation fails, the PID context is never created, but init
returns success. The subsequent vidtv_mux_push_si() call then gets
NULL from vidtv_mux_get_pid_ctx() and crashes.

Fix both the root cause (add error check in vidtv_mux_pid_ctx_init
for PMT PIDs) and add defensive NULL checks in vidtv_mux_push_si for
all vidtv_mux_get_pid_ctx() calls.

[1]
Oops: general protection fault, probably for non-canonical address 0xdffffc0000000000: 0000 [#1] SMP KASAN PTI
KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007]
Workqueue: events vidtv_mux_tick
RIP: 0010:vidtv_psi_ts_psi_write_into+0x54a/0xbc0 drivers/media/test-drivers/vidtv/vidtv_psi.c:197
Call Trace:
 <TASK>
 vidtv_psi_table_header_write_into drivers/media/test-drivers/vidtv/vidtv_psi.c:799 [inline]
 vidtv_psi_pmt_write_into+0x3b2/0xa70 drivers/media/test-drivers/vidtv/vidtv_psi.c:1231
 vidtv_mux_push_si+0x932/0xe80 drivers/media/test-drivers/vidtv/vidtv_mux.c:196
 vidtv_mux_tick+0xe9b/0x1480 drivers/media/test-drivers/vidtv/vidtv_mux.c:408

Fixes: f90cf6079b ("media: vidtv: add a bridge driver")
Cc: stable@vger.kernel.org
Reported-by: syzbot+814c351d094f4f1a1b86@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=814c351d094f4f1a1b86
Signed-off-by: Ruslan Valiyev <linuxoid@gmail.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2026-07-04 13:39:37 +02:00
..
cec media: cec: Fix debugfs leak on bus_register() failure 2026-01-19 13:10:02 +01:00
common media: videobuf2: use sgtable-based scatterlist wrappers 2025-06-27 11:05:24 +01:00
dvb-core media: dvb-net: fix OOB access in ULE extension header tables 2026-04-18 10:33:15 +02:00
dvb-frontends media: dib8000: avoid division by 0 in dib8000_set_dds() 2026-06-01 17:35:25 +02:00
firewire media: firewire: firedtv-avc: fix a buffer overflow in avc_ca_pmt() 2021-11-06 14:13:30 +01:00
i2c media: i2c: imx412: Assert reset GPIO during probe 2026-06-01 17:35:25 +02:00
mc media: mc, v4l2: serialize REINIT and REQBUFS with req_queue_mutex 2026-04-18 10:33:27 +02:00
mmc media updates for v5.8-rc1 2020-06-03 20:59:38 -07:00
pci media: cx25821: Add missing unmap in snd_cx25821_hw_params() 2026-03-04 07:20:27 -05:00
platform media: venus: vdec: fix error state assignment for zero bytesused 2026-03-04 07:20:30 -05:00
radio media: radio-keene: fix memory leak in error path 2026-03-04 07:20:26 -05:00
rc media: rc: igorplugusb: fix control request setup packet 2026-06-19 13:33:51 +02:00
spi media: cxd2880-spi: Fix a null pointer dereference on error handling path 2021-11-18 19:16:27 +01:00
test-drivers media: vidtv: fix NULL pointer dereference in vidtv_mux_push_si 2026-07-04 13:39:37 +02:00
tuners media: fix uninitialized symbol warnings 2025-12-07 06:09:20 +09:00
usb media: uvcvideo: Enable VB2_DMABUF for metadata stream 2026-06-01 17:35:24 +02:00
v4l2-core media: mc, v4l2: serialize REINIT and REQBUFS with req_queue_mutex 2026-04-18 10:33:27 +02:00
Kconfig media: correct MEDIA_TEST_SUPPORT help text 2022-01-27 11:05:20 +01:00
Makefile media: media/test_drivers: rename to test-drivers 2020-04-16 10:38:31 +02:00