2013-05-09 05:00:45

by Libo Chen

[permalink] [raw]
Subject: [PATCH 0/4] usb: fix four memleak

fix four goto wrong tag, avoid memleak

Libo Chen (4):
usb: ehci-s5p: fix memleak when fallback to pdata
usb: isp1760-if: fix memleak when platform_get_resource fail
usb: ohci: fix goto wrong tag in err case
usb: tilegx: fix memleak when create hcd fail

drivers/usb/host/ehci-s5p.c | 1 +
drivers/usb/host/isp1760-if.c | 4 +++-
drivers/usb/host/ohci-nxp.c | 12 ++++++------
drivers/usb/host/ohci-tilegx.c | 7 +++++--
4 files changed, 15 insertions(+), 9 deletions(-)


2013-05-09 05:01:14

by Libo Chen

[permalink] [raw]
Subject: [PATCH 4/4] usb: tilegx: fix memleak when create hcd fail

From: Libo Chen <[email protected]>

When usb_create_hcd fail, we should call gxio_usb_host_destroy

Signed-off-by: Libo Chen <[email protected]>
---
drivers/usb/host/ohci-tilegx.c | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/host/ohci-tilegx.c b/drivers/usb/host/ohci-tilegx.c
index 1ae7b28..5888fc4 100644
--- a/drivers/usb/host/ohci-tilegx.c
+++ b/drivers/usb/host/ohci-tilegx.c
@@ -112,8 +112,10 @@ static int ohci_hcd_tilegx_drv_probe(struct platform_device *pdev)

hcd = usb_create_hcd(&ohci_tilegx_hc_driver, &pdev->dev,
dev_name(&pdev->dev));
- if (!hcd)
- return -ENOMEM;
+ if (!hcd){
+ ret = -ENOMEM;
+ goto err_hcd;
+ }

/*
* We don't use rsrc_start to map in our registers, but seems like
@@ -165,6 +167,7 @@ err_have_irq:
err_no_irq:
tilegx_stop_ohc();
usb_put_hcd(hcd);
+err_hcd:
gxio_usb_host_destroy(&pdata->usb_ctx);
return ret;
}
--
1.7.1

2013-05-09 05:01:32

by Libo Chen

[permalink] [raw]
Subject: [PATCH 1/4] usb: ehci-s5p: fix memleak when fallback to pdata

From: Libo Chen <[email protected]>

When devm_usb_get_phy fail, we should free hcd

Signed-off-by: Libo Chen <[email protected]>
---
drivers/usb/host/ehci-s5p.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/usb/host/ehci-s5p.c b/drivers/usb/host/ehci-s5p.c
index 6357752..3fbab58 100644
--- a/drivers/usb/host/ehci-s5p.c
+++ b/drivers/usb/host/ehci-s5p.c
@@ -107,6 +107,7 @@ static int s5p_ehci_probe(struct platform_device *pdev)
if (IS_ERR(phy)) {
/* Fallback to pdata */
if (!pdata) {
+ usb_put_hcd(hcd);
dev_warn(&pdev->dev, "no platform data or transceiver defined\n");
return -EPROBE_DEFER;
} else {
--
1.7.1

2013-05-09 05:01:11

by Libo Chen

[permalink] [raw]
Subject: [PATCH 2/4] usb: isp1760-if: fix memleak when platform_get_resource fail

From: Libo Chen <[email protected]>

When platform_get_resource fail, we should release_mem_region

Signed-off-by: Libo Chen <[email protected]>
---
drivers/usb/host/isp1760-if.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/usb/host/isp1760-if.c b/drivers/usb/host/isp1760-if.c
index bbb791b..a13709e 100644
--- a/drivers/usb/host/isp1760-if.c
+++ b/drivers/usb/host/isp1760-if.c
@@ -373,8 +373,10 @@ static int isp1760_plat_probe(struct platform_device *pdev)
irq_res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
if (!irq_res) {
pr_warning("isp1760: IRQ resource not available\n");
- return -ENODEV;
+ ret = -ENODEV;
+ goto cleanup;
}
+
irqflags |= irq_res->flags & IRQF_TRIGGER_MASK;

if (priv) {
--
1.7.1

2013-05-09 05:02:07

by Libo Chen

[permalink] [raw]
Subject: [PATCH 3/4] usb: ohci: fix goto wrong tag in err case

From: Libo Chen <[email protected]>

fix goto wrong tag in usb_hcd_nxp_probe

Signed-off-by: Libo Chen <[email protected]>
---
drivers/usb/host/ohci-nxp.c | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/usb/host/ohci-nxp.c b/drivers/usb/host/ohci-nxp.c
index f4988fb..eb294a9 100644
--- a/drivers/usb/host/ohci-nxp.c
+++ b/drivers/usb/host/ohci-nxp.c
@@ -234,7 +234,7 @@ static int usb_hcd_nxp_probe(struct platform_device *pdev)
if (usb_disabled()) {
dev_err(&pdev->dev, "USB is disabled\n");
ret = -ENODEV;
- goto out;
+ goto out1;
}

/* Enable AHB slave USB clock, needed for further USB clock control */
@@ -265,13 +265,13 @@ static int usb_hcd_nxp_probe(struct platform_device *pdev)
if (IS_ERR(usb_dev_clk)) {
dev_err(&pdev->dev, "failed to acquire USB DEV Clock\n");
ret = PTR_ERR(usb_dev_clk);
- goto out4;
+ goto out3;
}

ret = clk_enable(usb_dev_clk);
if (ret < 0) {
dev_err(&pdev->dev, "failed to start USB DEV Clock\n");
- goto out5;
+ goto out4;
}

/* Enable USB otg clocks */
@@ -279,7 +279,7 @@ static int usb_hcd_nxp_probe(struct platform_device *pdev)
if (IS_ERR(usb_otg_clk)) {
dev_err(&pdev->dev, "failed to acquire USB DEV Clock\n");
ret = PTR_ERR(usb_otg_clk);
- goto out6;
+ goto out5;
}

__raw_writel(__raw_readl(USB_CTRL) | USB_HOST_NEED_CLK_EN, USB_CTRL);
@@ -287,7 +287,7 @@ static int usb_hcd_nxp_probe(struct platform_device *pdev)
ret = clk_enable(usb_otg_clk);
if (ret < 0) {
dev_err(&pdev->dev, "failed to start USB DEV Clock\n");
- goto out7;
+ goto out6;
}

isp1301_configure();
@@ -296,7 +296,7 @@ static int usb_hcd_nxp_probe(struct platform_device *pdev)
if (!hcd) {
dev_err(&pdev->dev, "Failed to allocate HC buffer\n");
ret = -ENOMEM;
- goto out8;
+ goto out7;
}

res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
--
1.7.1

2013-05-17 03:50:32

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH 4/4] usb: tilegx: fix memleak when create hcd fail

On Thu, May 09, 2013 at 12:58:11PM +0800, Libo Chen wrote:
> From: Libo Chen <[email protected]>
>
> When usb_create_hcd fail, we should call gxio_usb_host_destroy
>
> Signed-off-by: Libo Chen <[email protected]>
> ---
> drivers/usb/host/ohci-tilegx.c | 7 +++++--
> 1 files changed, 5 insertions(+), 2 deletions(-)

This patch doesn't apply at all, care to refresh it?

thanks,

greg k-h

2013-05-17 03:50:30

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH 3/4] usb: ohci: fix goto wrong tag in err case

On Thu, May 09, 2013 at 12:58:10PM +0800, Libo Chen wrote:
> From: Libo Chen <[email protected]>
>
> fix goto wrong tag in usb_hcd_nxp_probe
>
> Signed-off-by: Libo Chen <[email protected]>
> ---
> drivers/usb/host/ohci-nxp.c | 12 ++++++------
> 1 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/usb/host/ohci-nxp.c b/drivers/usb/host/ohci-nxp.c
> index f4988fb..eb294a9 100644
> --- a/drivers/usb/host/ohci-nxp.c
> +++ b/drivers/usb/host/ohci-nxp.c
> @@ -234,7 +234,7 @@ static int usb_hcd_nxp_probe(struct platform_device *pdev)
> if (usb_disabled()) {
> dev_err(&pdev->dev, "USB is disabled\n");
> ret = -ENODEV;
> - goto out;
> + goto out1;

Please fix this up to use better error case names so this does not
happen again.

thanks,

greg k-h

2013-05-17 04:32:32

by Libo Chen

[permalink] [raw]
Subject: Re: [PATCH 4/4] usb: tilegx: fix memleak when create hcd fail

Hi Greg,

On 2013/5/17 8:34, Greg KH wrote:
> On Thu, May 09, 2013 at 12:58:11PM +0800, Libo Chen wrote:
>> From: Libo Chen <[email protected]>
>>
>> When usb_create_hcd fail, we should call gxio_usb_host_destroy
>>
>> Signed-off-by: Libo Chen <[email protected]>
>> ---
>> drivers/usb/host/ohci-tilegx.c | 7 +++++--
>> 1 files changed, 5 insertions(+), 2 deletions(-)
>
> This patch doesn't apply at all, care to refresh it?
>
> thanks,
>
> greg k-h
>
> .

this patch has been merged to upstream by Chris Metcalf <[email protected]>.
(commit: abab8761d095e0805879df48a8ba6ea7f8b31c5e)

thanks,
Libo


>