From 359439d2888fdc3797903963607bb0bbd4582e08 Mon Sep 17 00:00:00 2001 From: Milind Choudhary Date: Wed, 12 Dec 2012 17:55:28 -0800 Subject: usb: Clean up newly allocated device nodes in case of configuration failure If probe of a newly connected device fails for some reason, clean up the allocated entry in usb_dev array. Signed-off-by: Milind Choudhary Signed-off-by: Simon Glass --- common/usb.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'common/usb.c') diff --git a/common/usb.c b/common/usb.c index ac9b4ca8d58..6fc0fc1c0ec 100644 --- a/common/usb.c +++ b/common/usb.c @@ -805,6 +805,18 @@ struct usb_device *usb_alloc_new_device(void *controller) return &usb_dev[dev_index - 1]; } +/* + * Free the newly created device node. + * Called in error cases where configuring a newly attached + * device fails for some reason. + */ +void usb_free_device(void) +{ + dev_index--; + USB_PRINTF("Freeing device node: %d\n", dev_index); + memset(&usb_dev[dev_index], 0, sizeof(struct usb_device)); + usb_dev[dev_index].devnum = -1; +} /* * By the time we get here, the device has gotten a new device ID -- cgit