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 |
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;