media: tc358743: fix possible use-after-free in tc358743_remove()
authorYang Yingliang <yangyingliang@huawei.com>
Tue, 6 Apr 2021 13:39:29 +0000 (15:39 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Fri, 9 Apr 2021 10:53:26 +0000 (12:53 +0200)
commit6107a4fdf8554a7aa9488bdc835bb010062fa8a9
treef36851246c6b87009f76ece8872b0a3adc60ceaa
parent686ee9b6253f9b6d7f1151e73114698940cc0894
media: tc358743: fix possible use-after-free in tc358743_remove()

This driver's remove path calls cancel_delayed_work(). However, that
function does not wait until the work function finishes. This means
that the callback function may still be running after the driver's
remove function has finished, which would result in a use-after-free.

Fix by calling cancel_delayed_work_sync(), which ensures that
the work is properly cancelled, no longer running, and unable
to re-schedule itself.

Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/i2c/tc358743.c