scsi: mpt3sas: Fix _transport_smp_handler() error path
authorBart Van Assche <bart.vanassche@wdc.com>
Fri, 15 Jun 2018 21:41:58 +0000 (14:41 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 20 Jun 2018 02:02:25 +0000 (22:02 -0400)
This patch avoids that smatch complains about a double unlock on
ioc->transport_cmds.mutex.

Fixes: 651a01364994 ("scsi: scsi_transport_sas: switch to bsg-lib for SMP passthrough")
Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Sathya Prakash <sathya.prakash@broadcom.com>
Cc: Chaitra P B <chaitra.basappa@broadcom.com>
Cc: Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com>
Cc: stable@vger.kernel.org
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/mpt3sas/mpt3sas_transport.c

index 05d506d..f4b02dd 100644 (file)
@@ -1936,12 +1936,12 @@ _transport_smp_handler(struct bsg_job *job, struct Scsi_Host *shost,
                pr_info(MPT3SAS_FMT "%s: host reset in progress!\n",
                    __func__, ioc->name);
                rc = -EFAULT;
-               goto out;
+               goto job_done;
        }
 
        rc = mutex_lock_interruptible(&ioc->transport_cmds.mutex);
        if (rc)
-               goto out;
+               goto job_done;
 
        if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) {
                pr_err(MPT3SAS_FMT "%s: transport_cmds in use\n", ioc->name,
@@ -2066,6 +2066,7 @@ _transport_smp_handler(struct bsg_job *job, struct Scsi_Host *shost,
  out:
        ioc->transport_cmds.status = MPT3_CMD_NOT_USED;
        mutex_unlock(&ioc->transport_cmds.mutex);
+job_done:
        bsg_job_done(job, rc, reslen);
 }