|
@@ -149,16 +149,17 @@ done:
|
|
|
int usb_function_deactivate(struct usb_function *function)
|
|
|
{
|
|
|
struct usb_composite_dev *cdev = function->config->cdev;
|
|
|
+ unsigned long flags;
|
|
|
int status = 0;
|
|
|
|
|
|
- spin_lock(&cdev->lock);
|
|
|
+ spin_lock_irqsave(&cdev->lock, flags);
|
|
|
|
|
|
if (cdev->deactivations == 0)
|
|
|
status = usb_gadget_disconnect(cdev->gadget);
|
|
|
if (status == 0)
|
|
|
cdev->deactivations++;
|
|
|
|
|
|
- spin_unlock(&cdev->lock);
|
|
|
+ spin_unlock_irqrestore(&cdev->lock, flags);
|
|
|
return status;
|
|
|
}
|
|
|
|