aboutsummaryrefslogtreecommitdiff
path: root/drivers/usb/gadget/composite.c
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2016-02-10 18:26:26 +0000
committerMark Brown <broonie@kernel.org>2016-02-10 18:26:26 +0000
commitb388b35a17d53dac58f2391795b823b7c5a54bac (patch)
treea8db4b571297771e191489abeede06514fe94fd3 /drivers/usb/gadget/composite.c
parent6b4fe72f6c1ab93a893a8bc2e1155d34d7689440 (diff)
parent17aa01a7059b202f893a9e7e859032640318b458 (diff)
Merge branch 'linaro-android-3.18-lsk' of git://android.git.linaro.org/kernel/linaro-android into linux-linaro-lsk-v3.18-androidlsk-v3.18-16.02-android
Diffstat (limited to 'drivers/usb/gadget/composite.c')
-rw-r--r--drivers/usb/gadget/composite.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c
index 815126ae386a..3d353ef97918 100644
--- a/drivers/usb/gadget/composite.c
+++ b/drivers/usb/gadget/composite.c
@@ -845,7 +845,7 @@ done:
}
EXPORT_SYMBOL_GPL(usb_add_config);
-static void unbind_config(struct usb_composite_dev *cdev,
+static void remove_config(struct usb_composite_dev *cdev,
struct usb_configuration *config)
{
while (!list_empty(&config->functions)) {
@@ -860,6 +860,7 @@ static void unbind_config(struct usb_composite_dev *cdev,
/* may free memory for "f" */
}
}
+ list_del(&config->list);
if (config->unbind) {
DBG(cdev, "unbind config '%s'/%p\n", config->label, config);
config->unbind(config);
@@ -886,11 +887,9 @@ void usb_remove_config(struct usb_composite_dev *cdev,
if (cdev->config == config)
reset_config(cdev);
- list_del(&config->list);
-
spin_unlock_irqrestore(&cdev->lock, flags);
- unbind_config(cdev, config);
+ remove_config(cdev, config);
}
/*-------------------------------------------------------------------------*/
@@ -1825,8 +1824,7 @@ static void __composite_unbind(struct usb_gadget *gadget, bool unbind_driver)
struct usb_configuration *c;
c = list_first_entry(&cdev->configs,
struct usb_configuration, list);
- list_del(&c->list);
- unbind_config(cdev, c);
+ remove_config(cdev, c);
}
if (cdev->driver->unbind && unbind_driver)
cdev->driver->unbind(cdev);