[PATCH] usb: dwc2: Fix memory leak in dwc2_hcd_init

Miaoqian Lin posted 1 patch 3 years, 11 months ago
drivers/usb/dwc2/hcd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] usb: dwc2: Fix memory leak in dwc2_hcd_init
Posted by Miaoqian Lin 3 years, 11 months ago
usb_create_hcd will alloc memory for hcd, and we should
call usb_put_hcd to free it when platform_get_resource()
fails to prevent memory leak.
goto error2 label instead error1 to fix this.

Fixes: 856e6e8e0f93 ("usb: dwc2: check return value after calling
platform_get_resource()")
Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
---
 drivers/usb/dwc2/hcd.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c
index f63a27d11fac..3f107a06817d 100644
--- a/drivers/usb/dwc2/hcd.c
+++ b/drivers/usb/dwc2/hcd.c
@@ -5190,7 +5190,7 @@ int dwc2_hcd_init(struct dwc2_hsotg *hsotg)
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	if (!res) {
 		retval = -EINVAL;
-		goto error1;
+		goto error2;
 	}
 	hcd->rsrc_start = res->start;
 	hcd->rsrc_len = resource_size(res);
-- 
2.25.1
Re: [PATCH] usb: dwc2: Fix memory leak in dwc2_hcd_init
Posted by Minas Harutyunyan 3 years, 11 months ago
On 5/30/2022 12:54 PM, Miaoqian Lin wrote:
> usb_create_hcd will alloc memory for hcd, and we should
> call usb_put_hcd to free it when platform_get_resource()
> fails to prevent memory leak.
> goto error2 label instead error1 to fix this.
> 
> Fixes: 856e6e8e0f93 ("usb: dwc2: check return value after calling
> platform_get_resource()")
> Signed-off-by: Miaoqian Lin <linmq006@gmail.com>

Acked-by: Minas Harutyunyan <hminas@synopsys.com>

> ---
>   drivers/usb/dwc2/hcd.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c
> index f63a27d11fac..3f107a06817d 100644
> --- a/drivers/usb/dwc2/hcd.c
> +++ b/drivers/usb/dwc2/hcd.c
> @@ -5190,7 +5190,7 @@ int dwc2_hcd_init(struct dwc2_hsotg *hsotg)
>   	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>   	if (!res) {
>   		retval = -EINVAL;
> -		goto error1;
> +		goto error2;
>   	}
>   	hcd->rsrc_start = res->start;
>   	hcd->rsrc_len = resource_size(res);