On Wed, Apr 01, 2020 at 11:01:20AM +0200, Daniel Wagner wrote: > --- a/drivers/scsi/qedf/qedf_els.c > +++ b/drivers/scsi/qedf/qedf_els.c > @@ -388,12 +388,11 @@ void qedf_restart_rport(struct qedf_rport *fcport) > mutex_lock(&lport->disc.disc_mutex); > /* Recreate the rport and log back in */ > rdata = fc_rport_create(lport, port_id); > + mutex_unlock(&lport->disc.disc_mutex); > if (rdata) { > - mutex_unlock(&lport->disc.disc_mutex); > fc_rport_login(rdata); > fcport->rdata = rdata; > } else { > - mutex_unlock(&lport->disc.disc_mutex); > fcport->rdata = NULL; > } > } Looking at it again, I think we could even do mutex_unlock(&lport->disc.disc_mutex); if (rdata) fc_rport_login(rdata); fcport->rdata = rdata;