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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html