diff options
author | James Smart <james.smart@avagotech.com> | 2015-05-21 20:55:26 +0300 |
---|---|---|
committer | James Bottomley <JBottomley@Odin.com> | 2015-06-06 08:39:07 +0300 |
commit | cc82355a6e6cb606125b849db7f9e9a10408d407 (patch) | |
tree | ab779d539c26b49ae7851542ec29adafdd31701d /drivers/scsi/lpfc/lpfc_nportdisc.c | |
parent | ed243d37be56be3dff4bf51a6f870d36843ed12f (diff) | |
download | linux-cc82355a6e6cb606125b849db7f9e9a10408d407.tar.xz |
lpfc: Fix crash in vport_delete.
We inadvertantly took the path to recreate the vport while in a
driver teardown path
Signed-off-by: Dick Kennedy <dick.kennedy@avagotech.com>
Signed-off-by: James Smart <james.smart@avagotech.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: James Bottomley <JBottomley@Odin.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_nportdisc.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_nportdisc.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/scsi/lpfc/lpfc_nportdisc.c b/drivers/scsi/lpfc/lpfc_nportdisc.c index 4cb9882af157..09de6408c457 100644 --- a/drivers/scsi/lpfc/lpfc_nportdisc.c +++ b/drivers/scsi/lpfc/lpfc_nportdisc.c @@ -661,7 +661,13 @@ lpfc_rcv_logo(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, lpfc_destroy_vport_work_array(phba, vports); } - if (active_vlink_present) { + /* + * Don't re-instantiate if vport is marked for deletion. + * If we are here first then vport_delete is going to wait + * for discovery to complete. + */ + if (!(vport->load_flag & FC_UNLOADING) && + active_vlink_present) { /* * If there are other active VLinks present, * re-instantiate the Vlink using FDISC. |