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 |
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
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 --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);
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(+)