lkml.org 
[lkml]   [2021]   [May]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.11 203/342] media: tc358743: fix possible use-after-free in tc358743_remove()
    Date
    From: Yang Yingliang <yangyingliang@huawei.com>

    [ Upstream commit 6107a4fdf8554a7aa9488bdc835bb010062fa8a9 ]

    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>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/media/i2c/tc358743.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/drivers/media/i2c/tc358743.c b/drivers/media/i2c/tc358743.c
    index 831b5b54fd78..1b309bb743c7 100644
    --- a/drivers/media/i2c/tc358743.c
    +++ b/drivers/media/i2c/tc358743.c
    @@ -2193,7 +2193,7 @@ static int tc358743_remove(struct i2c_client *client)
    del_timer_sync(&state->timer);
    flush_work(&state->work_i2c_poll);
    }
    - cancel_delayed_work(&state->delayed_work_enable_hotplug);
    + cancel_delayed_work_sync(&state->delayed_work_enable_hotplug);
    cec_unregister_adapter(state->cec_adap);
    v4l2_async_unregister_subdev(sd);
    v4l2_device_unregister_subdev(sd);
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-05-10 14:02    [W:2.074 / U:0.576 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site