public inbox for kernel-janitors@vger.kernel.org
 help / color / mirror / Atom feed
* [patch] ehci-ppc-of: problems in unwind
@ 2010-08-14  9:06 Dan Carpenter
  2010-08-16 21:52 ` Grant Likely
  0 siblings, 1 reply; 2+ messages in thread
From: Dan Carpenter @ 2010-08-14  9:06 UTC (permalink / raw)
  To: David Brownell
  Cc: Greg Kroah-Hartman, Grant Likely, Sean MacLennan, David S. Miller,
	linux-usb-u79uwXL29TY76Z2rM5mHXA,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, Vitaly Bordug,
	kernel-janitors-u79uwXL29TY76Z2rM5mHXA

The iounmap(ehci->ohci_hcctrl_reg); should be the first thing we do
because the ioremap() was the last thing we did.  Also if we hit any of
the goto statements in the original code then it would have led to a
NULL dereference of "ehci".  This bug was introduced in: 796bcae7361c
"USB: powerpc: Workaround for the PPC440EPX USBH_23 errata [take 3]"

I modified the few lines in front a little so that my code didn't
obscure the return success code path.

Signed-off-by: Dan Carpenter <error27@gmail.com>
---
I don't have a cross compile environment set up so I haven't compiled
this code.  Sorry for that.

diff --git a/drivers/usb/host/ehci-ppc-of.c b/drivers/usb/host/ehci-ppc-of.c
index 335ee69..ba52be4 100644
--- a/drivers/usb/host/ehci-ppc-of.c
+++ b/drivers/usb/host/ehci-ppc-of.c
@@ -192,17 +192,19 @@ ehci_hcd_ppc_of_probe(struct platform_device *op, const struct of_device_id *mat
 	}
 
 	rv = usb_add_hcd(hcd, irq, 0);
-	if (rv = 0)
-		return 0;
+	if (rv)
+		goto err_ehci;
+
+	return 0;
 
+err_ehci:
+	if (ehci->has_amcc_usb23)
+		iounmap(ehci->ohci_hcctrl_reg);
 	iounmap(hcd->regs);
 err_ioremap:
 	irq_dispose_mapping(irq);
 err_irq:
 	release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
-
-	if (ehci->has_amcc_usb23)
-		iounmap(ehci->ohci_hcctrl_reg);
 err_rmr:
 	usb_put_hcd(hcd);
 

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [patch] ehci-ppc-of: problems in unwind
  2010-08-14  9:06 [patch] ehci-ppc-of: problems in unwind Dan Carpenter
@ 2010-08-16 21:52 ` Grant Likely
  0 siblings, 0 replies; 2+ messages in thread
From: Grant Likely @ 2010-08-16 21:52 UTC (permalink / raw)
  To: Dan Carpenter
  Cc: David Brownell, Greg Kroah-Hartman, Sean MacLennan,
	David S. Miller, linux-usb-u79uwXL29TY76Z2rM5mHXA,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, Vitaly Bordug,
	kernel-janitors-u79uwXL29TY76Z2rM5mHXA

On Sat, Aug 14, 2010 at 3:06 AM, Dan Carpenter <error27@gmail.com> wrote:
> The iounmap(ehci->ohci_hcctrl_reg); should be the first thing we do
> because the ioremap() was the last thing we did.  Also if we hit any of
> the goto statements in the original code then it would have led to a
> NULL dereference of "ehci".  This bug was introduced in: 796bcae7361c
> "USB: powerpc: Workaround for the PPC440EPX USBH_23 errata [take 3]"
>
> I modified the few lines in front a little so that my code didn't
> obscure the return success code path.
>
> Signed-off-by: Dan Carpenter <error27@gmail.com>

Looks correct, but I don't have the hardware to test.

Slightly-Reviewed-by: Grant Likely <grant.likely@secretlab.ca>

g.

> ---
> I don't have a cross compile environment set up so I haven't compiled
> this code.  Sorry for that.
>
> diff --git a/drivers/usb/host/ehci-ppc-of.c b/drivers/usb/host/ehci-ppc-of.c
> index 335ee69..ba52be4 100644
> --- a/drivers/usb/host/ehci-ppc-of.c
> +++ b/drivers/usb/host/ehci-ppc-of.c
> @@ -192,17 +192,19 @@ ehci_hcd_ppc_of_probe(struct platform_device *op, const struct of_device_id *mat
>        }
>
>        rv = usb_add_hcd(hcd, irq, 0);
> -       if (rv = 0)
> -               return 0;
> +       if (rv)
> +               goto err_ehci;
> +
> +       return 0;
>
> +err_ehci:
> +       if (ehci->has_amcc_usb23)
> +               iounmap(ehci->ohci_hcctrl_reg);
>        iounmap(hcd->regs);
>  err_ioremap:
>        irq_dispose_mapping(irq);
>  err_irq:
>        release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
> -
> -       if (ehci->has_amcc_usb23)
> -               iounmap(ehci->ohci_hcctrl_reg);
>  err_rmr:
>        usb_put_hcd(hcd);
>
>



-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
--
To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2010-08-16 21:52 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-08-14  9:06 [patch] ehci-ppc-of: problems in unwind Dan Carpenter
2010-08-16 21:52 ` Grant Likely

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox