[PATCH] usb: phy: phy-tahvo: fix memory leak in tahvo_usb_probe()

Li Yang posted 1 patch 2 years, 8 months ago
There is a newer version of this series
drivers/usb/phy/phy-tahvo.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
[PATCH] usb: phy: phy-tahvo: fix memory leak in tahvo_usb_probe()
Posted by Li Yang 2 years, 8 months ago
Smatch reports:
drivers/usb/phy/phy-tahvo.c: tahvo_usb_probe()
warn: missing unwind goto?

After geting irq, if ret < 0, it will return without error handling to
free memory.
Just add error handling to fix this problem.

Fixes: 0d45a1373e66 ("usb: phy: tahvo: add IRQ check")
Signed-off-by: Li Yang <lidaxian@hust.edu.cn>
Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
---
The issue is found by static analysis, and the patch remains untest.
---
 drivers/usb/phy/phy-tahvo.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/phy/phy-tahvo.c b/drivers/usb/phy/phy-tahvo.c
index f2d2cc586c5b..184a5f3d7473 100644
--- a/drivers/usb/phy/phy-tahvo.c
+++ b/drivers/usb/phy/phy-tahvo.c
@@ -390,8 +390,11 @@ static int tahvo_usb_probe(struct platform_device *pdev)
 	dev_set_drvdata(&pdev->dev, tu);
 
 	tu->irq = ret = platform_get_irq(pdev, 0);
-	if (ret < 0)
-		return ret;
+	if (ret < 0) {
+		dev_err(&pdev->dev, "could not get irq: %d\n",
+				ret);
+		goto err_remove_phy;
+	}
 	ret = request_threaded_irq(tu->irq, NULL, tahvo_usb_vbus_interrupt,
 				   IRQF_ONESHOT,
 				   "tahvo-vbus", tu);
-- 
2.34.1
Re: [PATCH] usb: phy: phy-tahvo: fix memory leak in tahvo_usb_probe()
Posted by Sergey Shtylyov 2 years, 8 months ago
Hello!

On 4/18/23 12:07 PM, Li Yang wrote:

> Smatch reports:
> drivers/usb/phy/phy-tahvo.c: tahvo_usb_probe()
> warn: missing unwind goto?
> 
> After geting irq, if ret < 0, it will return without error handling to
> free memory.
> Just add error handling to fix this problem.

   Oops, I'm sorry for missing that one...

> Fixes: 0d45a1373e66 ("usb: phy: tahvo: add IRQ check")
> Signed-off-by: Li Yang <lidaxian@hust.edu.cn>
> Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
> ---
> The issue is found by static analysis, and the patch remains untest.
> ---
>  drivers/usb/phy/phy-tahvo.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/phy/phy-tahvo.c b/drivers/usb/phy/phy-tahvo.c
> index f2d2cc586c5b..184a5f3d7473 100644
> --- a/drivers/usb/phy/phy-tahvo.c
> +++ b/drivers/usb/phy/phy-tahvo.c
> @@ -390,8 +390,11 @@ static int tahvo_usb_probe(struct platform_device *pdev)
>  	dev_set_drvdata(&pdev->dev, tu);
>  
>  	tu->irq = ret = platform_get_irq(pdev, 0);
> -	if (ret < 0)
> -		return ret;
> +	if (ret < 0) {
> +		dev_err(&pdev->dev, "could not get irq: %d\n",
> +				ret);

   Adding the error message needs another patch, strictly speaking...

> +		goto err_remove_phy;
> +	}
>  	ret = request_threaded_irq(tu->irq, NULL, tahvo_usb_vbus_interrupt,
>  				   IRQF_ONESHOT,
>  				   "tahvo-vbus", tu);

MBR, Sergey
Re: [PATCH] usb: phy: phy-tahvo: fix memory leak in tahvo_usb_probe()
Posted by Sergey Shtylyov 2 years, 8 months ago
On 4/18/23 2:17 PM, Sergey Shtylyov wrote:
[...]
>> Smatch reports:
>> drivers/usb/phy/phy-tahvo.c: tahvo_usb_probe()
>> warn: missing unwind goto?
>>
>> After geting irq, if ret < 0, it will return without error handling to
>> free memory.
>> Just add error handling to fix this problem.
> 
>    Oops, I'm sorry for missing that one...
> 
>> Fixes: 0d45a1373e66 ("usb: phy: tahvo: add IRQ check")
>> Signed-off-by: Li Yang <lidaxian@hust.edu.cn>
>> Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
>> ---
>> The issue is found by static analysis, and the patch remains untest.
>> ---
>>  drivers/usb/phy/phy-tahvo.c | 7 +++++--
>>  1 file changed, 5 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/usb/phy/phy-tahvo.c b/drivers/usb/phy/phy-tahvo.c
>> index f2d2cc586c5b..184a5f3d7473 100644
>> --- a/drivers/usb/phy/phy-tahvo.c
>> +++ b/drivers/usb/phy/phy-tahvo.c
>> @@ -390,8 +390,11 @@ static int tahvo_usb_probe(struct platform_device *pdev)
>>  	dev_set_drvdata(&pdev->dev, tu);
>>  
>>  	tu->irq = ret = platform_get_irq(pdev, 0);
>> -	if (ret < 0)
>> -		return ret;
>> +	if (ret < 0) {
>> +		dev_err(&pdev->dev, "could not get irq: %d\n",
>> +				ret);
> 
>    Adding the error message needs another patch, strictly speaking...

   And if you look at platform_get_irq(), you'll see that it prints an error msg
itself...

[...]

MBR, Sergey
Re: [PATCH] usb: phy: phy-tahvo: fix memory leak in tahvo_usb_probe()
Posted by Greg Kroah-Hartman 2 years, 8 months ago
On Tue, Apr 18, 2023 at 05:07:57PM +0800, Li Yang wrote:
> Smatch reports:
> drivers/usb/phy/phy-tahvo.c: tahvo_usb_probe()
> warn: missing unwind goto?
> 
> After geting irq, if ret < 0, it will return without error handling to
> free memory.
> Just add error handling to fix this problem.
> 
> Fixes: 0d45a1373e66 ("usb: phy: tahvo: add IRQ check")
> Signed-off-by: Li Yang <lidaxian@hust.edu.cn>
> Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
> ---
> The issue is found by static analysis, and the patch remains untest.
> ---
>  drivers/usb/phy/phy-tahvo.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/phy/phy-tahvo.c b/drivers/usb/phy/phy-tahvo.c
> index f2d2cc586c5b..184a5f3d7473 100644
> --- a/drivers/usb/phy/phy-tahvo.c
> +++ b/drivers/usb/phy/phy-tahvo.c
> @@ -390,8 +390,11 @@ static int tahvo_usb_probe(struct platform_device *pdev)
>  	dev_set_drvdata(&pdev->dev, tu);
>  
>  	tu->irq = ret = platform_get_irq(pdev, 0);
> -	if (ret < 0)
> -		return ret;
> +	if (ret < 0) {
> +		dev_err(&pdev->dev, "could not get irq: %d\n",
> +				ret);

Why print this out?  And why the odd line-wrapping?

thanks,

greg k-h
Re: Re: [PATCH] usb: phy: phy-tahvo: fix memory leak in tahvo_usb_probe()
Posted by 李阳 2 years, 8 months ago


> -----Original Messages-----
> From: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
> Sent Time: 2023-04-18 17:19:12 (Tuesday)
> To: "Li Yang" <lidaxian@hust.edu.cn>
> Cc: "Felipe Balbi" <balbi@kernel.org>, "Sergey Shtylyov" <s.shtylyov@omp.ru>, "Dongliang Mu" <dzm91@hust.edu.cn>, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
> Subject: Re: [PATCH] usb: phy: phy-tahvo: fix memory leak in tahvo_usb_probe()
> 
> On Tue, Apr 18, 2023 at 05:07:57PM +0800, Li Yang wrote:
> > Smatch reports:
> > drivers/usb/phy/phy-tahvo.c: tahvo_usb_probe()
> > warn: missing unwind goto?
> > 
> > After geting irq, if ret < 0, it will return without error handling to
> > free memory.
> > Just add error handling to fix this problem.
> > 
> > Fixes: 0d45a1373e66 ("usb: phy: tahvo: add IRQ check")
> > Signed-off-by: Li Yang <lidaxian@hust.edu.cn>
> > Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
> > ---
> > The issue is found by static analysis, and the patch remains untest.
> > ---
> >  drivers/usb/phy/phy-tahvo.c | 7 +++++--
> >  1 file changed, 5 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/usb/phy/phy-tahvo.c b/drivers/usb/phy/phy-tahvo.c
> > index f2d2cc586c5b..184a5f3d7473 100644
> > --- a/drivers/usb/phy/phy-tahvo.c
> > +++ b/drivers/usb/phy/phy-tahvo.c
> > @@ -390,8 +390,11 @@ static int tahvo_usb_probe(struct platform_device *pdev)
> >  	dev_set_drvdata(&pdev->dev, tu);
> >  
> >  	tu->irq = ret = platform_get_irq(pdev, 0);
> > -	if (ret < 0)
> > -		return ret;
> > +	if (ret < 0) {
> > +		dev_err(&pdev->dev, "could not get irq: %d\n",
> > +				ret);
> 
> Why print this out?  And why the odd line-wrapping?
> 
> thanks,
> 
> greg k-h
For the first question, I am just emulating the coding style of the original author who outputs corresponding information after each error. If there is anything unreasonable about doing so, please let me know. As for the second question, it's my mistake and I will correct it immediately.

regrads,
Li Yang
Re: [PATCH] usb: phy: phy-tahvo: fix memory leak in tahvo_usb_probe()
Posted by 李阳 2 years, 8 months ago


> -----Original Messages-----
> From: "Li Yang" <lidaxian@hust.edu.cn>
> Sent Time: 2023-04-18 17:07:57 (Tuesday)
> To: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>, "Felipe Balbi" <balbi@kernel.org>, "Sergey Shtylyov" <s.shtylyov@omp.ru>
> Cc: "Li Yang" <lidaxian@hust.edu.cn>, "Dongliang Mu" <dzm91@hust.edu.cn>, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
> Subject: [PATCH] usb: phy: phy-tahvo: fix memory leak in tahvo_usb_probe()
> 
> Smatch reports:
> drivers/usb/phy/phy-tahvo.c: tahvo_usb_probe()
> warn: missing unwind goto?
> 
> After geting irq, if ret < 0, it will return without error handling to
> free memory.
> Just add error handling to fix this problem.
> 
> Fixes: 0d45a1373e66 ("usb: phy: tahvo: add IRQ check")
> Signed-off-by: Li Yang <lidaxian@hust.edu.cn>
> Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
> ---
> The issue is found by static analysis, and the patch remains untest.
> ---
>  drivers/usb/phy/phy-tahvo.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/phy/phy-tahvo.c b/drivers/usb/phy/phy-tahvo.c
> index f2d2cc586c5b..184a5f3d7473 100644
> --- a/drivers/usb/phy/phy-tahvo.c
> +++ b/drivers/usb/phy/phy-tahvo.c
> @@ -390,8 +390,11 @@ static int tahvo_usb_probe(struct platform_device *pdev)
>  	dev_set_drvdata(&pdev->dev, tu);
>  
>  	tu->irq = ret = platform_get_irq(pdev, 0);
> -	if (ret < 0)
> -		return ret;
> +	if (ret < 0) {
> +		dev_err(&pdev->dev, "could not get irq: %d\n",
> +				ret);
> +		goto err_remove_phy;
> +	}
>  	ret = request_threaded_irq(tu->irq, NULL, tahvo_usb_vbus_interrupt,
>  				   IRQF_ONESHOT,
>  				   "tahvo-vbus", tu);
> -- 
> 2.34.1
cc hust-os-kernel-patches@googlegroups.com