kernel_samsung_a53x/drivers/media
Li Zetao 1b3bba51e3 media: ts2020: fix null-ptr-deref in ts2020_probe()
commit 4a058b34b52ed3feb1f3ff6fd26aefeeeed20cba upstream.

KASAN reported a null-ptr-deref issue when executing the following
command:

  # echo ts2020 0x20 > /sys/bus/i2c/devices/i2c-0/new_device
    KASAN: null-ptr-deref in range [0x0000000000000010-0x0000000000000017]
    CPU: 53 UID: 0 PID: 970 Comm: systemd-udevd Not tainted 6.12.0-rc2+ #24
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009)
    RIP: 0010:ts2020_probe+0xad/0xe10 [ts2020]
    RSP: 0018:ffffc9000abbf598 EFLAGS: 00010202
    RAX: dffffc0000000000 RBX: 0000000000000000 RCX: ffffffffc0714809
    RDX: 0000000000000002 RSI: ffff88811550be00 RDI: 0000000000000010
    RBP: ffff888109868800 R08: 0000000000000001 R09: fffff52001577eb6
    R10: 0000000000000000 R11: ffffc9000abbff50 R12: ffffffffc0714790
    R13: 1ffff92001577eb8 R14: ffffffffc07190d0 R15: 0000000000000001
    FS:  00007f95f13b98c0(0000) GS:ffff888149280000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000555d2634b000 CR3: 0000000152236000 CR4: 00000000000006f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     ts2020_probe+0xad/0xe10 [ts2020]
     i2c_device_probe+0x421/0xb40
     really_probe+0x266/0x850
    ...

The cause of the problem is that when using sysfs to dynamically register
an i2c device, there is no platform data, but the probe process of ts2020
needs to use platform data, resulting in a null pointer being accessed.

Solve this problem by adding checks to platform data.

Fixes: dc245a5f9b51 ("[media] ts2020: implement I2C client bindings")
Cc: <stable@vger.kernel.org>
Signed-off-by: Li Zetao <lizetao1@huawei.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-12-17 13:20:50 +01:00
..
cec media: pulse8-cec: fix data timestamp at pulse8_setup() 2024-11-30 02:33:23 +01:00
common media: v4l2-tpg: prevent the risk of a division by zero 2024-11-30 02:33:23 +01:00
dvb-core media: dvb_frontend: don't play tricks with underflow values 2024-11-30 02:33:23 +01:00
dvb-frontends media: ts2020: fix null-ptr-deref in ts2020_probe() 2024-12-17 13:20:50 +01:00
firewire
i2c media: i2c: tc358743: Fix crash in the probe error path when using polling 2024-12-17 13:20:50 +01:00
mc media: mc: mark the media devnode as registered from the, start 2024-11-19 12:27:17 +01:00
mmc
pci Revert "media: solo6x10: replace max(a, min(b, c)) by clamp(b, a, c)" 2024-11-24 00:23:52 +01:00
platform media: s5p-jpeg: prevent buffer overflows 2024-11-30 02:33:23 +01:00
radio media: radio-isa: use dev_name to fill in bus_info 2024-11-23 23:20:44 +01:00
rc lirc: rc_dev_get_from_fd(): fix file leak 2024-11-23 23:20:18 +01:00
spi
test-drivers Revert "media: vivid: fix wrong sizeimage value for mplane" 2024-11-24 00:23:43 +01:00
tuners media: xc4000: Fix atomicity violation in xc4000_get_frequency 2024-11-19 09:22:15 +01:00
usb media: uvcvideo: Skip parsing frames of type UVC_VS_UNDEFINED in uvc_parse_format 2024-11-30 02:33:26 +01:00
v4l2-core media: v4l2-core: hold videodev_lock until dev reg, finishes 2024-11-19 12:27:17 +01:00
Kconfig
Makefile