aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/qla2xxx/tcm_qla2xxx.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
index e2beab962096..4747d2c66024 100644
--- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
+++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
@@ -757,7 +757,16 @@ static void tcm_qla2xxx_clear_nacl_from_fcport_map(struct qla_tgt_sess *sess)
757 pr_debug("fc_rport domain: port_id 0x%06x\n", nacl->nport_id); 757 pr_debug("fc_rport domain: port_id 0x%06x\n", nacl->nport_id);
758 758
759 node = btree_remove32(&lport->lport_fcport_map, nacl->nport_id); 759 node = btree_remove32(&lport->lport_fcport_map, nacl->nport_id);
760 WARN_ON(node && (node != se_nacl)); 760 if (WARN_ON(node && (node != se_nacl))) {
761 /*
762 * The nacl no longer matches what we think it should be.
763 * Most likely a new dynamic acl has been added while
764 * someone dropped the hardware lock. It clearly is a
765 * bug elsewhere, but this bit can't make things worse.
766 */
767 btree_insert32(&lport->lport_fcport_map, nacl->nport_id,
768 node, GFP_ATOMIC);
769 }
761 770
762 pr_debug("Removed from fcport_map: %p for WWNN: 0x%016LX, port_id: 0x%06x\n", 771 pr_debug("Removed from fcport_map: %p for WWNN: 0x%016LX, port_id: 0x%06x\n",
763 se_nacl, nacl->nport_wwnn, nacl->nport_id); 772 se_nacl, nacl->nport_wwnn, nacl->nport_id);