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