On Tue, Sep 14, 2021 at 4:25 PM Dmitry Bogdanov wrote: > > nport_free for an empty nport hangs the state machine waiting for mbox > completion if nport is not yet attached thinking that it is attaching > right now. > Add a check for nport attaching state and complete nport free. > > Signed-off-by: Dmitry Bogdanov > --- > drivers/scsi/elx/libefc/efc_cmds.c | 7 ++++++- > drivers/scsi/elx/libefc/efclib.h | 1 + > 2 files changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/scsi/elx/libefc/efc_cmds.c b/drivers/scsi/elx/libefc/efc_cmds.c > index 37e6697d86b8..f8665d48904a 100644 > --- a/drivers/scsi/elx/libefc/efc_cmds.c > +++ b/drivers/scsi/elx/libefc/efc_cmds.c > @@ -249,6 +249,7 @@ efc_nport_attach_reg_vpi_cb(struct efc *efc, int status, u8 *mqe, > { > struct efc_nport *nport = arg; > > + nport->attaching = false; > if (efc_nport_get_mbox_status(nport, mqe, status)) { > efc_nport_free_resources(nport, EFC_EVT_NPORT_ATTACH_FAIL, mqe); > return -EIO; > @@ -286,6 +287,8 @@ efc_cmd_nport_attach(struct efc *efc, struct efc_nport *nport, u32 fc_id) > if (rc) { > efc_log_err(efc, "REG_VPI command failure\n"); > efc_nport_free_resources(nport, EFC_EVT_NPORT_ATTACH_FAIL, buf); > + } else { > + nport->attaching = true; > } > > return rc; > @@ -302,8 +305,10 @@ efc_cmd_nport_free(struct efc *efc, struct efc_nport *nport) > /* Issue the UNREG_VPI command to free the assigned VPI context */ > if (nport->attached) > efc_nport_free_unreg_vpi(nport); > - else > + else if (nport->attaching) > nport->free_req_pending = true; > + else > + efc_sm_post_event(&nport->sm, EFC_EVT_NPORT_FREE_OK, NULL); > > return 0; > } > diff --git a/drivers/scsi/elx/libefc/efclib.h b/drivers/scsi/elx/libefc/efclib.h > index ee291cabf7e0..dde20891c2dd 100644 > --- a/drivers/scsi/elx/libefc/efclib.h > +++ b/drivers/scsi/elx/libefc/efclib.h > @@ -142,6 +142,7 @@ struct efc_nport { > bool is_vport; > bool free_req_pending; > bool attached; > + bool attaching; > bool p2p_winner; > struct efc_domain *domain; > u64 wwpn; > -- > 2.25.1 > Looks good. Thanks. Reviewed-by: Ram Vegesna -- This electronic communication and the information and any files transmitted with it, or attached to it, are confidential and are intended solely for the use of the individual or entity to whom it is addressed and may contain information that is confidential, legally privileged, protected by privacy laws, or otherwise restricted from disclosure to anyone else. If you are not the intended recipient or the person responsible for delivering the e-mail to the intended recipient, you are hereby notified that any use, copying, distributing, dissemination, forwarding, printing, or copying of this e-mail is strictly prohibited. If you received this e-mail in error, please return the e-mail to the sender, delete it from your computer, and destroy any printed copy of it.