|
@@ -326,6 +326,7 @@ static void usb_wwan_outdat_callback(struct urb *urb)
|
|
|
struct usb_serial_port *port;
|
|
|
struct usb_wwan_port_private *portdata;
|
|
|
struct usb_wwan_intf_private *intfdata;
|
|
|
+ unsigned long flags;
|
|
|
int i;
|
|
|
|
|
|
port = urb->context;
|
|
@@ -334,9 +335,9 @@ static void usb_wwan_outdat_callback(struct urb *urb)
|
|
|
usb_serial_port_softint(port);
|
|
|
usb_autopm_put_interface_async(port->serial->interface);
|
|
|
portdata = usb_get_serial_port_data(port);
|
|
|
- spin_lock(&intfdata->susp_lock);
|
|
|
+ spin_lock_irqsave(&intfdata->susp_lock, flags);
|
|
|
intfdata->in_flight--;
|
|
|
- spin_unlock(&intfdata->susp_lock);
|
|
|
+ spin_unlock_irqrestore(&intfdata->susp_lock, flags);
|
|
|
|
|
|
for (i = 0; i < N_OUT_URB; ++i) {
|
|
|
if (portdata->out_urbs[i] == urb) {
|