aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorPavankumar Kondeti <pkondeti@codeaurora.org>2011-01-10 22:49:21 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2011-01-22 21:49:02 -0500
commit49d3df53a80deed2251b91f50ae9e1c5caf7ded7 (patch)
treef00514582d966515e27d345469f2053a2a62b8a6 /drivers
parent15680cdfc69a7277ba87a8a3a3242d67c4ba5916 (diff)
USB: gadget: Fix error path in ci13xxx_udc gadget probe function
Don't call gadget driver's unbind when bind is failed. Initialize udc->driver only after gadget driver bind is successful. Otherwise pull-up can be enabled upon VBUS session even when no gadget is bounded. Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/usb/gadget/ci13xxx_udc.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/usb/gadget/ci13xxx_udc.c b/drivers/usb/gadget/ci13xxx_udc.c
index 31656a2b4ab..b0b90621dc1 100644
--- a/drivers/usb/gadget/ci13xxx_udc.c
+++ b/drivers/usb/gadget/ci13xxx_udc.c
@@ -2427,7 +2427,6 @@ int usb_gadget_probe_driver(struct usb_gadget_driver *driver,
2427 2427
2428 info("hw_ep_max = %d", hw_ep_max); 2428 info("hw_ep_max = %d", hw_ep_max);
2429 2429
2430 udc->driver = driver;
2431 udc->gadget.dev.driver = NULL; 2430 udc->gadget.dev.driver = NULL;
2432 2431
2433 retval = 0; 2432 retval = 0;
@@ -2479,6 +2478,7 @@ int usb_gadget_probe_driver(struct usb_gadget_driver *driver,
2479 goto done; 2478 goto done;
2480 } 2479 }
2481 2480
2481 udc->driver = driver;
2482 pm_runtime_get_sync(&udc->gadget.dev); 2482 pm_runtime_get_sync(&udc->gadget.dev);
2483 if (udc->udc_driver->flags & CI13XXX_PULLUP_ON_VBUS) { 2483 if (udc->udc_driver->flags & CI13XXX_PULLUP_ON_VBUS) {
2484 if (udc->vbus_active) { 2484 if (udc->vbus_active) {
@@ -2496,8 +2496,6 @@ int usb_gadget_probe_driver(struct usb_gadget_driver *driver,
2496 2496
2497 done: 2497 done:
2498 spin_unlock_irqrestore(udc->lock, flags); 2498 spin_unlock_irqrestore(udc->lock, flags);
2499 if (retval)
2500 usb_gadget_unregister_driver(driver);
2501 return retval; 2499 return retval;
2502} 2500}
2503EXPORT_SYMBOL(usb_gadget_probe_driver); 2501EXPORT_SYMBOL(usb_gadget_probe_driver);