|
@@ -300,9 +300,10 @@ int usb_function_deactivate(struct usb_function *function)
|
|
|
int usb_function_activate(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 (WARN_ON(cdev->deactivations == 0))
|
|
|
status = -EINVAL;
|
|
@@ -312,7 +313,7 @@ int usb_function_activate(struct usb_function *function)
|
|
|
status = usb_gadget_connect(cdev->gadget);
|
|
|
}
|
|
|
|
|
|
- spin_unlock(&cdev->lock);
|
|
|
+ spin_unlock_irqrestore(&cdev->lock, flags);
|
|
|
return status;
|
|
|
}
|
|
|
|