Skip to contentSkip to conversation

scsi: aacraid: Include HBA direct interface

bug report Dan Carpenter 1 participant 1 message Feb 13, 2017 SCSI

lore
Share & tools
lore
#0 lore raw

Hello Raghava Aditya Renukunta,

The patch 423400e64d37: "scsi: aacraid: Include HBA direct interface" from Feb 2, 2017, leads to the following static checker warning:

	drivers/scsi/aacraid/commsup.c:762 aac_hba_send()
	error: double unlock 'sem:&fibptr->event_wait'

drivers/scsi/aacraid/commsup.c
757 if (wait) {
758 spin_unlock_irqrestore(&fibptr->event_lock, flags);
759 /* Only set for first known interruptable command */

This comment just confuses me... What is a "known interruptable command?"

   760                  if (down_interruptible(&fibptr->event_wait)) {

down_interruptible() return -EINTR on failure so this test looks reversed. It should probably be:

			if (!down_interruptible(&fibptr->event_wait)) {
   761                          fibptr->done = 2;
   762                          up(&fibptr->event_wait);
   763                  }
   764                  spin_lock_irqsave(&fibptr->event_lock, flags);
   765                  if ((fibptr->done == 0) || (fibptr->done == 2)) {
   766                          fibptr->done = 2; /* Tell interrupt we aborted */
   767                          spin_unlock_irqrestore(&fibptr->event_lock, flags);
   768                          return -ERESTARTSYS;
   769                  }
   770                  spin_unlock_irqrestore(&fibptr->event_lock, flags);
   771                  WARN_ON(fibptr->done == 0);
   772  
   773                  if (unlikely(fibptr->flags & FIB_CONTEXT_FLAG_TIMED_OUT))
   774                          return -ETIMEDOUT;
   775  
   776                  return 0;
   777          }

regards,
dan carpenter