diff options
author | James.Smart@Emulex.Com <James.Smart@Emulex.Com> | 2005-08-10 15:02:50 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.(none)> | 2005-08-12 13:08:30 -0400 |
commit | 8cbdc5fffa15d5c573e2531c6f533822d08b6b0f (patch) | |
tree | 3bd3c4f60e0cbb5c316dad3789abaf4fc1facbd0 /drivers/scsi/lpfc/lpfc_hbadisc.c | |
parent | 483f05f0134e60b724bc3678507c1def860c56d5 (diff) |
[SCSI] lpfc driver 8.0.30 : fix lip/cablepull panic
Fix panic on lip and cable pull
Symptoms: Panic on lip or cable pull
Cause: Use after free of nlp in lpfc_nlp_remove()
Fix: Do not make FC transport calls after a node is removed. Transport
calls are disabled by ignoring the initial delete transition.
Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_hbadisc.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_hbadisc.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/scsi/lpfc/lpfc_hbadisc.c b/drivers/scsi/lpfc/lpfc_hbadisc.c index 233901e9dfde..2e44824a3bd5 100644 --- a/drivers/scsi/lpfc/lpfc_hbadisc.c +++ b/drivers/scsi/lpfc/lpfc_hbadisc.c | |||
@@ -1135,6 +1135,8 @@ lpfc_nlp_list(struct lpfc_hba * phba, struct lpfc_nodelist * nlp, int list) | |||
1135 | switch(list) { | 1135 | switch(list) { |
1136 | case NLP_NO_LIST: /* No list, just remove it */ | 1136 | case NLP_NO_LIST: /* No list, just remove it */ |
1137 | lpfc_nlp_remove(phba, nlp); | 1137 | lpfc_nlp_remove(phba, nlp); |
1138 | /* as node removed - stop further transport calls */ | ||
1139 | rport_del = none; | ||
1138 | break; | 1140 | break; |
1139 | case NLP_UNUSED_LIST: | 1141 | case NLP_UNUSED_LIST: |
1140 | spin_lock_irq(phba->host->host_lock); | 1142 | spin_lock_irq(phba->host->host_lock); |