summaryrefslogtreecommitdiff
path: root/drivers/usb/host
diff options
context:
space:
mode:
authorPeter Chen <peter.chen@freescale.com>2011-01-06 16:51:19 +0800
committerAlan Tull <alan.tull@freescale.com>2011-02-03 16:36:20 -0600
commitb5d8c00948b95dede9efb8740b07e7d3f43e74ef (patch)
tree7c9185a47360607c05216e8cd5d7e926fbf8cde8 /drivers/usb/host
parent723cdb38b346a48b6053aed280e32f454853ad42 (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>
Diffstat (limited to 'drivers/usb/host')
-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: