linux/drivers/media
Vikash Garodia e1c69c4eef media: venus: fixes for list corruption
There are few list handling issues while adding and deleting
node in the registered buf list in the driver.
1. list addition - buffer added into the list during buf_init
while not deleted during cleanup.
2. list deletion - In capture streamoff, the list was reinitialized.
As a result, if any node was present in the list, it would
lead to issue while cleaning up that node during buf_cleanup.

Corresponding call traces below:
[  165.751014] Call trace:
[  165.753541]  __list_add_valid+0x58/0x88
[  165.757532]  venus_helper_vb2_buf_init+0x74/0xa8 [venus_core]
[  165.763450]  vdec_buf_init+0x34/0xb4 [venus_dec]
[  165.768271]  __buf_prepare+0x598/0x8a0 [videobuf2_common]
[  165.773820]  vb2_core_qbuf+0xb4/0x334 [videobuf2_common]
[  165.779298]  vb2_qbuf+0x78/0xb8 [videobuf2_v4l2]
[  165.784053]  v4l2_m2m_qbuf+0x80/0xf8 [v4l2_mem2mem]
[  165.789067]  v4l2_m2m_ioctl_qbuf+0x2c/0x38 [v4l2_mem2mem]
[  165.794624]  v4l_qbuf+0x48/0x58

[ 1797.556001] Call trace:
[ 1797.558516]  __list_del_entry_valid+0x88/0x9c
[ 1797.562989]  vdec_buf_cleanup+0x54/0x228 [venus_dec]
[ 1797.568088]  __buf_prepare+0x270/0x8a0 [videobuf2_common]
[ 1797.573625]  vb2_core_qbuf+0xb4/0x338 [videobuf2_common]
[ 1797.579082]  vb2_qbuf+0x78/0xb8 [videobuf2_v4l2]
[ 1797.583830]  v4l2_m2m_qbuf+0x80/0xf8 [v4l2_mem2mem]
[ 1797.588843]  v4l2_m2m_ioctl_qbuf+0x2c/0x38 [v4l2_mem2mem]
[ 1797.594389]  v4l_qbuf+0x48/0x58

Signed-off-by: Vikash Garodia <vgarodia@codeaurora.org>
Reviewed-by: Fritz Koenig <frkoenig@chromium.org>
Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
2020-09-01 14:13:29 +02:00
..
cec media: cec: no need to check return value of debugfs_create functions 2020-09-01 14:13:26 +02:00
common media: Use fallthrough pseudo-keyword 2020-08-29 08:35:27 +02:00
dvb-core media: videobuf2: add queue memory consistency parameter 2020-06-23 13:31:12 +02:00
dvb-frontends media: Use fallthrough pseudo-keyword 2020-08-29 08:35:27 +02:00
firewire media: firewire: Using uninitialized values in node_probe() 2020-07-04 11:57:10 +02:00
i2c media: ov5675: correct the maximum exposure value 2020-09-01 14:13:27 +02:00
mc media: mc-device.c: change media_device_request_alloc to match media_ioctl_info 2020-08-29 08:15:23 +02:00
mmc media updates for v5.8-rc1 2020-06-03 20:59:38 -07:00
pci saa7134: drop unnecessary list_empty 2020-09-01 13:37:53 +02:00
platform media: venus: fixes for list corruption 2020-09-01 14:13:29 +02:00
radio media: radio: si476x: no need to check return value of debugfs_create functions 2020-09-01 14:13:26 +02:00
rc media: Use fallthrough pseudo-keyword 2020-08-29 08:35:27 +02:00
spi media: i2c/Kconfig: use sub-menus for I2C support 2020-04-16 10:34:40 +02:00
test-drivers media: Use fallthrough pseudo-keyword 2020-08-29 08:35:27 +02:00
tuners media: Use fallthrough pseudo-keyword 2020-08-29 08:35:27 +02:00
usb tm6000: drop unnecessary list_empty 2020-09-01 14:12:36 +02:00
v4l2-core media: uapi: h264: Clean slice invariants syntax elements 2020-09-01 14:13:28 +02:00
Kconfig media: media/test_drivers: rename to test-drivers 2020-04-16 10:38:31 +02:00
Makefile media: media/test_drivers: rename to test-drivers 2020-04-16 10:38:31 +02:00