aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWojtek Kaniewski <wojtekka@toxygen.net>2006-12-08 03:23:00 -0800
committerGreg Kroah-Hartman <gregkh@suse.de>2006-12-20 10:14:27 -0800
commit943c441948581bd01ab196a4d32da88bfa0f13ce (patch)
treee985bcf811c13a576a4169dde2b2dd8258d1c009
parentbc92c32aa21cf2e8808f8cff0be0a2a653652e92 (diff)
USB: at91_udc: Cleanup variables after failure in usb_gadget_register_driver()
This patch zeroes some variables when usb_gadget_register_driver() fails. gadgetfs does a dummy registration to get the name of the USB driver and then waits for user-land driver. If someone plugs the cable in the meantime, bad things happen, because at91_udc has been left in inconsistent state. Signed-off-by: Wojtek Kaniewski <wojtekka@toxygen.net> Acked-by: David Brownell <dbrownell@users.sourceforge.net> Cc: Andrew Victor <andrew@sanpeople.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/usb/gadget/at91_udc.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c
index 38a2e113e70..1926d39e480 100644
--- a/drivers/usb/gadget/at91_udc.c
+++ b/drivers/usb/gadget/at91_udc.c
@@ -1601,6 +1601,10 @@ int usb_gadget_register_driver (struct usb_gadget_driver *driver)
if (retval) {
DBG("driver->bind() returned %d\n", retval);
udc->driver = NULL;
+ udc->gadget.dev.driver = NULL;
+ udc->gadget.dev.driver_data = NULL;
+ udc->enabled = 0;
+ udc->selfpowered = 0;
return retval;
}