diff mbox series

USB: host: Check for null res pointer

Message ID 20211220064946.817004-1-jiasheng@iscas.ac.cn (mailing list archive)
State Superseded
Headers show
Series USB: host: Check for null res pointer | expand

Commit Message

Jiasheng Jiang Dec. 20, 2021, 6:49 a.m. UTC
The return value of platform_get_resource() needs to be checked.
To avoid use of error pointer in case of the failure of alloc.

Fixes: 4808a1c02611 ("[PATCH] USB: Add isp116x-hcd USB host controller driver")
Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
---
 drivers/usb/host/isp116x-hcd.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Sergey Shtylyov Dec. 20, 2021, 10:15 a.m. UTC | #1
Hello!

On 20.12.2021 9:49, Jiasheng Jiang wrote:

> The return value of platform_get_resource() needs to be checked.
> To avoid use of error pointer in case of the failure of alloc.
> 
> Fixes: 4808a1c02611 ("[PATCH] USB: Add isp116x-hcd USB host controller driver")
> Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
> ---
>   drivers/usb/host/isp116x-hcd.c | 6 ++++++
>   1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/usb/host/isp116x-hcd.c b/drivers/usb/host/isp116x-hcd.c
> index 8835f6bd528e..addd2b43a14c 100644
> --- a/drivers/usb/host/isp116x-hcd.c
> +++ b/drivers/usb/host/isp116x-hcd.c
> @@ -1541,9 +1541,15 @@ static int isp116x_remove(struct platform_device *pdev)
>   
>   	iounmap(isp116x->data_reg);
>   	res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
> +	if (!res)
> +		return -EINVAL;
> +
>   	release_mem_region(res->start, 2);
>   	iounmap(isp116x->addr_reg);
>   	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> +	if (!res)
> +		return -EINVAL;

    Hm, these usually are reported as -ENODEV, no?

[...]

MBR, Sergey
Greg KH Dec. 20, 2021, 2:45 p.m. UTC | #2
On Mon, Dec 20, 2021 at 02:49:46PM +0800, Jiasheng Jiang wrote:
> The return value of platform_get_resource() needs to be checked.
> To avoid use of error pointer in case of the failure of alloc.
> 
> Fixes: 4808a1c02611 ("[PATCH] USB: Add isp116x-hcd USB host controller driver")
> Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
> ---
>  drivers/usb/host/isp116x-hcd.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/usb/host/isp116x-hcd.c b/drivers/usb/host/isp116x-hcd.c
> index 8835f6bd528e..addd2b43a14c 100644
> --- a/drivers/usb/host/isp116x-hcd.c
> +++ b/drivers/usb/host/isp116x-hcd.c
> @@ -1541,9 +1541,15 @@ static int isp116x_remove(struct platform_device *pdev)
>  
>  	iounmap(isp116x->data_reg);
>  	res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
> +	if (!res)
> +		return -EINVAL;

You really can not fail a remove call.  If you do so here, memory will
leak.

Please make this work no matter what.

thanks,

greg k-h
diff mbox series

Patch

diff --git a/drivers/usb/host/isp116x-hcd.c b/drivers/usb/host/isp116x-hcd.c
index 8835f6bd528e..addd2b43a14c 100644
--- a/drivers/usb/host/isp116x-hcd.c
+++ b/drivers/usb/host/isp116x-hcd.c
@@ -1541,9 +1541,15 @@  static int isp116x_remove(struct platform_device *pdev)
 
 	iounmap(isp116x->data_reg);
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
+	if (!res)
+		return -EINVAL;
+
 	release_mem_region(res->start, 2);
 	iounmap(isp116x->addr_reg);
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	if (!res)
+		return -EINVAL;
+
 	release_mem_region(res->start, 2);
 
 	usb_put_hcd(hcd);