aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorJames Smart <james.smart@emulex.com>2013-05-31 17:04:01 -0400
committerJames Bottomley <JBottomley@Parallels.com>2013-06-26 13:48:43 -0400
commit91f32d01d9fff7f5f15f3ad136e55dc42d02f9ff (patch)
tree144ad3e8e971e2449a740984308b365475761ffe /drivers/scsi
parent61f35bff15dd94ad4108c7deb8bf3fcf53d32958 (diff)
[SCSI] lpfc 8.3.40: Fix inconsistent list removal causes crash.
Signed-off-by: James Smart <james.smart@emulex.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/lpfc/lpfc_sli.c18
1 files changed, 0 insertions, 18 deletions
diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c
index bd185e1bdf03..2e86ac0d5433 100644
--- a/drivers/scsi/lpfc/lpfc_sli.c
+++ b/drivers/scsi/lpfc/lpfc_sli.c
@@ -1011,17 +1011,6 @@ __lpfc_sli_release_iocbq_s4(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq)
1011 else 1011 else
1012 sglq = __lpfc_clear_active_sglq(phba, iocbq->sli4_lxritag); 1012 sglq = __lpfc_clear_active_sglq(phba, iocbq->sli4_lxritag);
1013 1013
1014 /*
1015 ** This should have been removed from the txcmplq before calling
1016 ** iocbq_release. The normal completion
1017 ** path should have already done the list_del_init.
1018 */
1019 if (unlikely(!list_empty(&iocbq->list))) {
1020 if (iocbq->iocb_flag & LPFC_IO_ON_TXCMPLQ)
1021 iocbq->iocb_flag &= ~LPFC_IO_ON_TXCMPLQ;
1022 list_del_init(&iocbq->list);
1023 }
1024
1025 1014
1026 if (sglq) { 1015 if (sglq) {
1027 if ((iocbq->iocb_flag & LPFC_EXCHANGE_BUSY) && 1016 if ((iocbq->iocb_flag & LPFC_EXCHANGE_BUSY) &&
@@ -1070,13 +1059,6 @@ __lpfc_sli_release_iocbq_s3(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq)
1070{ 1059{
1071 size_t start_clean = offsetof(struct lpfc_iocbq, iocb); 1060 size_t start_clean = offsetof(struct lpfc_iocbq, iocb);
1072 1061
1073 /*
1074 ** This should have been removed from the txcmplq before calling
1075 ** iocbq_release. The normal completion
1076 ** path should have already done the list_del_init.
1077 */
1078 if (unlikely(!list_empty(&iocbq->list)))
1079 list_del_init(&iocbq->list);
1080 1062
1081 /* 1063 /*
1082 * Clean all volatile data fields, preserve iotag and node struct. 1064 * Clean all volatile data fields, preserve iotag and node struct.