diff mbox series

scsi: qedf: Simplify mutex_unlock() usage

Message ID 20200401090120.24958-1-dwagner@suse.de (mailing list archive)
State Superseded
Headers show
Series scsi: qedf: Simplify mutex_unlock() usage | expand

Commit Message

Daniel Wagner April 1, 2020, 9:01 a.m. UTC
The commit 6d1368e8f987 ("scsi: qedf: fixup locking in
qedf_restart_rport()") introduced the lock. Though the lock protects
only the fc_rport_create() call. Thus, we can move the mutex unlock up
before the if statement.

Cc: Hannes Reinecke <hare@suse.com>
Cc: Saurav Kashyap <skashyap@marvell.com>
Signed-off-by: Daniel Wagner <dwagner@suse.de>
---
 drivers/scsi/qedf/qedf_els.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

Daniel Wagner April 1, 2020, 9:33 a.m. UTC | #1
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;
diff mbox series

Patch

diff --git a/drivers/scsi/qedf/qedf_els.c b/drivers/scsi/qedf/qedf_els.c
index 87e169dcebdb..c60eede92145 100644
--- 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;
 		}
 	}