[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