diff options
author | Pavankumar Kondeti <pkondeti@codeaurora.org> | 2011-01-10 22:49:21 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-01-22 21:49:02 -0500 |
commit | 49d3df53a80deed2251b91f50ae9e1c5caf7ded7 (patch) | |
tree | f00514582d966515e27d345469f2053a2a62b8a6 /drivers | |
parent | 15680cdfc69a7277ba87a8a3a3242d67c4ba5916 (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.c | 4 |
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 | } |
2503 | EXPORT_SYMBOL(usb_gadget_probe_driver); | 2501 | EXPORT_SYMBOL(usb_gadget_probe_driver); |