[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-usb
Subject:    Re: [PATCH 4/4] uas: improve abort handler
From:       Gerd Hoffmann <kraxel () redhat ! com>
Date:       2012-11-29 14:38:51
Message-ID: 50B7737B.7070206 () redhat ! com
[Download RAW message or body]

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@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic