scsi: NCR5380: Reduce goto statements in NCR5380_select() [Linux 4.9.187]

This Linux kernel change "scsi: NCR5380: Reduce goto statements in NCR5380_select()" is included in the Linux 4.9.187 release. This change is authored by Finn Thain <fthain [at] telegraphics.com.au> on Thu Sep 27 11:17:11 2018 +1000. The commit for this change in Linux stable tree is 24dcf8c (patch) which is from upstream commit 6a16283. The same Linux upstream change may have been applied to various maintained Linux releases and you can find all Linux releases containing changes from upstream 6a16283.

scsi: NCR5380: Reduce goto statements in NCR5380_select()

commit 6a162836997c10bbefb7c7ca772201cc45c0e4a6 upstream.

Replace a 'goto' statement with a simple 'return' where possible.  This
improves readability. No functional change.

Tested-by: Michael Schmitz <schmitzmic@gmail.com>
Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

There are 21 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 drivers/scsi/NCR5380.c | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c
index 790babc..5d6e387 100644
--- a/drivers/scsi/NCR5380.c
+++ b/drivers/scsi/NCR5380.c
@@ -1086,7 +1086,7 @@ static struct scsi_cmnd *NCR5380_select(struct Scsi_Host *instance,
    if (!hostdata->selecting) {
        /* Command was aborted */
        NCR5380_write(MODE_REG, MR_BASE);
-       goto out;
+       return NULL;
    }
    if (err < 0) {
        NCR5380_write(MODE_REG, MR_BASE);
@@ -1135,7 +1135,7 @@ static struct scsi_cmnd *NCR5380_select(struct Scsi_Host *instance,
    if (!hostdata->selecting) {
        NCR5380_write(MODE_REG, MR_BASE);
        NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
-       goto out;
+       return NULL;
    }

    dsprintk(NDEBUG_ARBITRATION, instance, "won arbitration\n");
@@ -1218,13 +1218,16 @@ static struct scsi_cmnd *NCR5380_select(struct Scsi_Host *instance,
        spin_lock_irq(&hostdata->lock);
        NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
        NCR5380_write(SELECT_ENABLE_REG, hostdata->id_mask);
+
        /* Can't touch cmd if it has been reclaimed by the scsi ML */
-       if (hostdata->selecting) {
-           cmd->result = DID_BAD_TARGET << 16;
-           complete_cmd(instance, cmd);
-           dsprintk(NDEBUG_SELECTION, instance, "target did not respond within 250ms\n");
-           cmd = NULL;
-       }
+       if (!hostdata->selecting)
+           return NULL;
+
+       cmd->result = DID_BAD_TARGET << 16;
+       complete_cmd(instance, cmd);
+       dsprintk(NDEBUG_SELECTION, instance,
+           "target did not respond within 250ms\n");
+       cmd = NULL;
        goto out;
    }

@@ -1257,7 +1260,7 @@ static struct scsi_cmnd *NCR5380_select(struct Scsi_Host *instance,
    }
    if (!hostdata->selecting) {
        do_abort(instance);
-       goto out;
+       return NULL;
    }

    dsprintk(NDEBUG_SELECTION, instance, "target %d selected, going into MESSAGE OUT phase.\n",

Leave a Reply

Your email address will not be published. Required fields are marked *