[patch] ehci-ppc-of: problems in unwind

Grant Likely grant.likely at secretlab.ca
Tue Aug 17 07:52:54 EST 2010


On Sat, Aug 14, 2010 at 3:06 AM, Dan Carpenter <error27 at 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 at gmail.com>

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

Slightly-Reviewed-by: Grant Likely <grant.likely at 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.


More information about the devicetree-discuss mailing list