lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 076/239] media: msi001: fix possible null-ptr-deref in msi001_probe()
    Date
    From: Wang Hai <wanghai38@huawei.com>

    [ Upstream commit 3d5831a40d3464eea158180eb12cbd81c5edfb6a ]

    I got a null-ptr-deref report:

    BUG: kernel NULL pointer dereference, address: 0000000000000060
    ...
    RIP: 0010:v4l2_ctrl_auto_cluster+0x57/0x270
    ...
    Call Trace:
    msi001_probe+0x13b/0x24b [msi001]
    spi_probe+0xeb/0x130
    ...
    do_syscall_64+0x35/0xb0

    In msi001_probe(), if the creation of control for bandwidth_auto
    fails, there will be a null-ptr-deref issue when it is used in
    v4l2_ctrl_auto_cluster().

    Check dev->hdl.error before v4l2_ctrl_auto_cluster() to fix this bug.

    Link: https://lore.kernel.org/linux-media/20211026112348.2878040-1-wanghai38@huawei.com
    Fixes: 93203dd6c7c4 ("[media] msi001: Mirics MSi001 silicon tuner driver")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Wang Hai <wanghai38@huawei.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/media/tuners/msi001.c | 7 +++++++
    1 file changed, 7 insertions(+)

    diff --git a/drivers/media/tuners/msi001.c b/drivers/media/tuners/msi001.c
    index 5de6ed7287085..13ffe196b7a42 100644
    --- a/drivers/media/tuners/msi001.c
    +++ b/drivers/media/tuners/msi001.c
    @@ -451,6 +451,13 @@ static int msi001_probe(struct spi_device *spi)
    V4L2_CID_RF_TUNER_BANDWIDTH_AUTO, 0, 1, 1, 1);
    dev->bandwidth = v4l2_ctrl_new_std(&dev->hdl, &msi001_ctrl_ops,
    V4L2_CID_RF_TUNER_BANDWIDTH, 200000, 8000000, 1, 200000);
    + if (dev->hdl.error) {
    + ret = dev->hdl.error;
    + dev_err(&spi->dev, "Could not initialize controls\n");
    + /* control init failed, free handler */
    + goto err_ctrl_handler_free;
    + }
    +
    v4l2_ctrl_auto_cluster(2, &dev->bandwidth_auto, 0, false);
    dev->lna_gain = v4l2_ctrl_new_std(&dev->hdl, &msi001_ctrl_ops,
    V4L2_CID_RF_TUNER_LNA_GAIN, 0, 1, 1, 1);
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-24 20:40    [W:4.208 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site