summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Chen <peter.chen@freescale.com>2011-01-06 16:51:19 +0800
committerLily Zhang <r58066@freescale.com>2011-01-07 10:30:23 +0800
commit639a190b01cf99f5b3689ecd5163fae3b91a39ab (patch)
tree1ec3d621bf472a18cd39fb869e2359e634577991
parent0c6edff05c6da52359714c2ae8977836716e023d (diff)
ENGR00137667-2 usb-host: hcd needs to be removed if the host's probe is error
Hcd needs to be removed if the host's probe meets error, if not, the system hang will occur. Reported-by: Robby Cai <r63905@freescale.com> Signed-off-by: Peter Chen <peter.chen@freescale.com>
-rw-r--r--drivers/usb/host/ehci-arc.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/usb/host/ehci-arc.c b/drivers/usb/host/ehci-arc.c
index 4702587122d0..849ffc514b79 100644
--- a/drivers/usb/host/ehci-arc.c
+++ b/drivers/usb/host/ehci-arc.c
@@ -264,7 +264,7 @@ int usb_hcd_fsl_probe(const struct hc_driver *driver,
if (!ehci->transceiver) {
printk(KERN_ERR "can't find transceiver\n");
retval = -ENODEV;
- goto err5;
+ goto err6;
}
retval = otg_set_host(ehci->transceiver, &ehci_to_hcd(ehci)->self);
@@ -282,6 +282,8 @@ int usb_hcd_fsl_probe(const struct hc_driver *driver,
fsl_platform_set_ahb_burst(hcd);
ehci_testmode_init(hcd_to_ehci(hcd));
return retval;
+err6:
+ usb_remove_hcd(hcd);
err5:
free_irq(irq, (void *)pdev);
err4: