On 11/29/12 14:29, Oliver Neukum wrote: > On Thursday 29 November 2012 14:06:15 Gerd Hoffmann wrote: >> diff --git a/drivers/usb/storage/uas.c b/drivers/usb/storage/uas.c >> index dd23b61..5f498db 100644 >> --- a/drivers/usb/storage/uas.c >> +++ b/drivers/usb/storage/uas.c >> @@ -717,8 +717,22 @@ static int uas_eh_abort_handler(struct scsi_cmnd *cmnd) >> uas_log_cmd_state(cmnd, __func__); >> spin_lock_irqsave(&devinfo->lock, flags); >> cmdinfo->state |= COMMAND_ABORTED; >> - spin_unlock_irqrestore(&devinfo->lock, flags); >> - ret = uas_eh_task_mgmt(cmnd, "ABORT TASK", TMF_ABORT_TASK); >> + if (cmdinfo->state & IS_IN_WORK_LIST) { >> + spin_lock_irq(&uas_work_lock); > > a) it makes no sense to take the _irq version while you hold an _irqsave Will fix. > b) are you sure this sequence of locks is safe deadlockwise? Yes. No other lock is acquired anywhere while holding uas_work_lock. cheers, Gerd -- 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