diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2014-07-18 13:56:37 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2014-07-22 08:09:04 +0200 |
commit | d113857d2b7d696f69fc41299d5f5069c3c4d59c (patch) | |
tree | 6faee7bd538965ebd2d436e71b6100383db4c514 /drivers/usb | |
parent | b670c7566e06e035ce16bce026e2a63fc9e61e12 (diff) | |
download | barebox-d113857d2b7d696f69fc41299d5f5069c3c4d59c.tar.gz barebox-d113857d2b7d696f69fc41299d5f5069c3c4d59c.tar.xz |
USB: gadget: composite: Break out of potential endless loop
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/gadget/composite.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c index 37c67d5353..ba3b9da206 100644 --- a/drivers/usb/gadget/composite.c +++ b/drivers/usb/gadget/composite.c @@ -577,16 +577,21 @@ static void reset_config(struct usb_composite_dev *cdev) { struct usb_function *f; + if (cdev->in_reset_config) + return; + + cdev->in_reset_config = 1; + DBG(cdev, "reset config\n"); list_for_each_entry(f, &cdev->config->functions, list) { if (f->disable) f->disable(f); - bitmap_zero(f->endpoints, 32); } cdev->config = NULL; cdev->delayed_status = 0; + cdev->in_reset_config = 0; } static int set_config(struct usb_composite_dev *cdev, |