On Sat, Aug 14, 2010 at 3:06 AM, Dan Carpenter <error27@xxxxxxxxx> 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@xxxxxxxxx> Looks correct, but I don't have the hardware to test. Slightly-Reviewed-by: Grant Likely <grant.likely@xxxxxxxxxxxx> 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 linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html