Showing error 566

User: Jiri Slaby
Error type: Double Lock
Error type description: Some lock is locked twice unintentionally in a sequence
File location: drivers/scsi/megaraid/megaraid_mbox.c
Line in file: 1911
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2011-11-07 22:19:59 UTC


Source:

1881                        mbox64->xferaddr_lo        = (uint32_t)ccb->pthru_dma_h;
1882                        mbox64->xferaddr_hi        = 0;
1883                        mbox->xferaddr                = 0xFFFFFFFF;
1884                }
1885                return scb;
1886        }
1887
1888        // NOT REACHED
1889}
1890
1891
1892/**
1893 * megaraid_mbox_runpendq - execute commands queued in the pending queue
1894 * @adapter        : controller's soft state
1895 * @scb_q        : SCB to be queued in the pending list
1896 *
1897 * Scan the pending list for commands which are not yet issued and try to
1898 * post to the controller. The SCB can be a null pointer, which would indicate
1899 * no SCB to be queue, just try to execute the ones in the pending list.
1900 *
1901 * NOTE: We do not actually traverse the pending list. The SCBs are plucked
1902 * out from the head of the pending list. If it is successfully issued, the
1903 * next SCB is at the head now.
1904 */
1905static void
1906megaraid_mbox_runpendq(adapter_t *adapter, scb_t *scb_q)
1907{
1908        scb_t                        *scb;
1909        unsigned long                flags;
1910
1911        spin_lock_irqsave(PENDING_LIST_LOCK(adapter), flags);
1912
1913        if (scb_q) {
1914                scb_q->state = SCB_PENDQ;
1915                list_add_tail(&scb_q->list, &adapter->pend_list);
1916        }
1917
1918        // if the adapter in not in quiescent mode, post the commands to FW
1919        if (adapter->quiescent) {
1920                spin_unlock_irqrestore(PENDING_LIST_LOCK(adapter), flags);
1921                return;
Show full sources