Subject: [PATCH v2] media: em28xx: Fix possible memory leak of em28xx struct

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 <[email protected]>
---
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 @@ static int em28xx_ir_init(struct em28xx *dev)
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.20.1


2021-05-05 19:52:23

by Shuah Khan

[permalink] [raw]
Subject: Re: [PATCH v2] media: em28xx: Fix possible memory leak of em28xx struct

On 5/4/21 2:32 PM, Igor Matheus Andrade Torrente wrote:
> 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 <[email protected]>
> ---

Hi Igor,

Please look at Hans's response and comments to your v1 patch. v4l core
addresses the lifetime issues now and this driver could be updated to
use them instead if fixing the problems in this driver's resource
lifetime mgmt code.

Please follow his review comments to address the issue based on his
suggestions.

thanks,
-- Shuah

2021-05-06 07:45:17

by Hans Verkuil

[permalink] [raw]
Subject: Re: [PATCH v2] media: em28xx: Fix possible memory leak of em28xx struct

On 05/05/2021 17:54, Shuah Khan wrote:
> On 5/4/21 2:32 PM, Igor Matheus Andrade Torrente wrote:
>> 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 <[email protected]>
>> ---
>
> Hi Igor,
>
> Please look at Hans's response and comments to your v1 patch. v4l core
> addresses the lifetime issues now and this driver could be updated to
> use them instead if fixing the problems in this driver's resource
> lifetime mgmt code.

Actually, this patch is fine (I think, still need to review it). This is
related to the input part, not v4l2.

Regards,

Hans

>
> Please follow his review comments to address the issue based on his
> suggestions.
>
> thanks,
> -- Shuah
>