On Thu, Jul 11, 2013 at 9:02 PM, Sergei Shtylyov <sergei.shtylyov@xxxxxxxxxxxxxxxxxx> wrote: > Hello. > > > On 11-07-2013 13:05, Ming Lei wrote: > >> Complete() will be run with interrupt enabled, so change to >> spin_lock_irqsave(). > > >> Cc: Johan Hovold <jhovold@xxxxxxxxx> >> Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxxxxx> >> --- >> drivers/usb/serial/sierra.c | 9 +++++---- >> 1 file changed, 5 insertions(+), 4 deletions(-) > > >> diff --git a/drivers/usb/serial/sierra.c b/drivers/usb/serial/sierra.c >> index de958c5..e79b6ad 100644 >> --- a/drivers/usb/serial/sierra.c >> +++ b/drivers/usb/serial/sierra.c >> @@ -433,6 +433,7 @@ static void sierra_outdat_callback(struct urb *urb) >> struct sierra_port_private *portdata = >> usb_get_serial_port_data(port); >> struct sierra_intf_private *intfdata; >> int status = urb->status; >> + unsigned long flags; >> >> intfdata = port->serial->private; >> >> @@ -443,12 +444,12 @@ static void sierra_outdat_callback(struct urb *urb) >> dev_dbg(&port->dev, "%s - nonzero write bulk status " >> "received: %d\n", __func__, status); >> >> - spin_lock(&portdata->lock); >> + spin_lock_irqsave(&portdata->lock, flags); >> --portdata->outstanding_urbs; >> - spin_unlock(&portdata->lock); >> - spin_lock(&intfdata->susp_lock); >> + spin_unlock_irqrestore(&portdata->lock, flags); >> + spin_lock_irqsave(&intfdata->susp_lock, flags); > > > You are allowing an interrupt enabled window where previously it wasn't > possible. Why notleave these 2 lines as is? It isn't a big deal because no lock is held when interrupt is enabled. Thanks, -- Ming Lei -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html