lkml.org 
[lkml]   [2021]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 086/348] media: em28xx: Fix possible memory leak of em28xx struct
    Date
    From: Igor Matheus Andrade Torrente <igormtorrente@gmail.com>

    [ Upstream commit ac5688637144644f06ed1f3c6d4dd8bb7db96020 ]

    The em28xx struct kref isn't being decreased after an error in the
    em28xx_ir_init, leading to a possible memory leak.

    A kref_put and em28xx_shutdown_buttons is added to the error handler code.

    Signed-off-by: Igor Matheus Andrade Torrente <igormtorrente@gmail.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/usb/em28xx/em28xx-input.c | 8 ++++++--
    1 file changed, 6 insertions(+), 2 deletions(-)

    diff --git a/drivers/media/usb/em28xx/em28xx-input.c b/drivers/media/usb/em28xx/em28xx-input.c
    index 5aa15a7a49de..59529cbf9cd0 100644
    --- a/drivers/media/usb/em28xx/em28xx-input.c
    +++ b/drivers/media/usb/em28xx/em28xx-input.c
    @@ -720,7 +720,8 @@ static int em28xx_ir_init(struct em28xx *dev)
    dev->board.has_ir_i2c = 0;
    dev_warn(&dev->intf->dev,
    "No i2c IR remote control device found.\n");
    - return -ENODEV;
    + err = -ENODEV;
    + goto ref_put;
    }
    }

    @@ -735,7 +736,7 @@ static int em28xx_ir_init(struct em28xx *dev)

    ir = kzalloc(sizeof(*ir), GFP_KERNEL);
    if (!ir)
    - return -ENOMEM;
    + goto ref_put;
    rc = rc_allocate_device(RC_DRIVER_SCANCODE);
    if (!rc)
    goto error;
    @@ -839,6 +840,9 @@ error:
    dev->ir = NULL;
    rc_free_device(rc);
    kfree(ir);
    +ref_put:
    + em28xx_shutdown_buttons(dev);
    + kref_put(&dev->ref, em28xx_free_device);
    return err;
    }

    --
    2.30.2


    \
     
     \ /
      Last update: 2021-07-12 08:19    [W:4.029 / U:0.184 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site