2014-12-19 23:51:17

by Shuah Khan

[permalink] [raw]
Subject: [PATCH] media: fix au0828_analog_register() to not free au0828_dev

From: Shuah Khan <[email protected]>

au0828_analog_register() frees au0828_dev when it fails to
locate isoc endpoint. au0828_usb_probe() continues with dvb
and rc probe and registration assuming dev is still valid.
When au0828_analog_register() fails to locate isoc endpoint,
it should return without free'ing au0828_dev. Otherwise, the
probe will fail as dev is null when au0828_dvb_register() is
called.

Signed-off-by: Shuah Khan <[email protected]>
---
drivers/media/usb/au0828/au0828-video.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/drivers/media/usb/au0828/au0828-video.c b/drivers/media/usb/au0828/au0828-video.c
index 3bdf132..94b65b8 100644
--- a/drivers/media/usb/au0828/au0828-video.c
+++ b/drivers/media/usb/au0828/au0828-video.c
@@ -1713,7 +1713,6 @@ int au0828_analog_register(struct au0828_dev *dev,
}
if (!(dev->isoc_in_endpointaddr)) {
pr_info("Could not locate isoc endpoint\n");
- kfree(dev);
return -ENODEV;
}

--
2.1.0


2014-12-20 00:27:11

by Shuah Khan

[permalink] [raw]
Subject: Re: [PATCH] media: fix au0828_analog_register() to not free au0828_dev

On 12/19/2014 04:42 PM, Shuah Khan wrote:
> From: Shuah Khan <[email protected]>

Sorry. That doesn't look right. Looks like my gitconfig
is bad. I can resend the patch.

-- Shuah
>
> au0828_analog_register() frees au0828_dev when it fails to
> locate isoc endpoint. au0828_usb_probe() continues with dvb
> and rc probe and registration assuming dev is still valid.
> When au0828_analog_register() fails to locate isoc endpoint,
> it should return without free'ing au0828_dev. Otherwise, the
> probe will fail as dev is null when au0828_dvb_register() is
> called.
>
> Signed-off-by: Shuah Khan <[email protected]>
> ---
> drivers/media/usb/au0828/au0828-video.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/media/usb/au0828/au0828-video.c b/drivers/media/usb/au0828/au0828-video.c
> index 3bdf132..94b65b8 100644
> --- a/drivers/media/usb/au0828/au0828-video.c
> +++ b/drivers/media/usb/au0828/au0828-video.c
> @@ -1713,7 +1713,6 @@ int au0828_analog_register(struct au0828_dev *dev,
> }
> if (!(dev->isoc_in_endpointaddr)) {
> pr_info("Could not locate isoc endpoint\n");
> - kfree(dev);
> return -ENODEV;
> }
>
>


--
Shuah Khan
Sr. Linux Kernel Developer
Samsung Open Source Group
Samsung Research America (Silicon Valley)
[email protected] | (970) 217-8978