Showing error 1706

User: Jiri Slaby
Error type: Double Unlock
Error type description: Some lock is unlocked twice unintentionally in a sequence
File location: drivers/scsi/aacraid/commsup.c
Line in file: 1490
Project: Linux Kernel
Project version: 2.6.28
Tools: Smatch (1.59)
Entered: 2013-09-10 15:16:58 UTC


Source:

1460                         * Set the event to wake up the
1461                         * thread that will waiting.
1462                         */
1463                        up(&fibctx->wait_sem);
1464                } else {
1465                        printk(KERN_WARNING "aifd: didn't allocate NewFib.\n");
1466                        kfree(fib);
1467                        kfree(hw_fib);
1468                }
1469                entry = entry->next;
1470        }
1471
1472        spin_unlock_irqrestore(&aac->fib_lock, flagv);
1473
1474        if (BlinkLED < 0) {
1475                printk(KERN_ERR "%s: Host adapter dead %d\n", aac->name, BlinkLED);
1476                goto out;
1477        }
1478
1479        printk(KERN_ERR "%s: Host adapter BLINK LED 0x%x\n", aac->name, BlinkLED);
1480
1481        if (!aac_check_reset || ((aac_check_reset == 1) &&
1482                (aac->supplement_adapter_info.SupportedOptions2 &
1483                        AAC_OPTION_IGNORE_RESET)))
1484                goto out;
1485        host = aac->scsi_host_ptr;
1486        if (aac->thread->pid != current->pid)
1487                spin_lock_irqsave(host->host_lock, flagv);
1488        BlinkLED = _aac_reset_adapter(aac, aac_check_reset != 1);
1489        if (aac->thread->pid != current->pid)
1490                spin_unlock_irqrestore(host->host_lock, flagv);
1491        return BlinkLED;
1492
1493out:
1494        aac->in_reset = 0;
1495        return BlinkLED;
1496}
1497
1498
1499/**
1500 *        aac_command_thread        -        command processing thread
Show full sources