scsi: ufs: bsg: Clean up ufs_bsg_request()
authorBean Huo <beanhuo@micron.com>
Thu, 1 Dec 2022 14:04:33 +0000 (15:04 +0100)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 30 Dec 2022 21:01:03 +0000 (21:01 +0000)
Move sg_copy_from_buffer() below its associated case statement.

Signed-off-by: Bean Huo <beanhuo@micron.com>
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/ufs/core/ufs_bsg.c

index 9ac8204..850a0d7 100644 (file)
@@ -90,11 +90,8 @@ static int ufs_bsg_request(struct bsg_job *job)
                desc_op = bsg_request->upiu_req.qr.opcode;
                ret = ufs_bsg_alloc_desc_buffer(hba, job, &desc_buff,
                                                &desc_len, desc_op);
-               if (ret) {
-                       ufshcd_rpm_put_sync(hba);
+               if (ret)
                        goto out;
-               }
-
                fallthrough;
        case UPIU_TRANSACTION_NOP_OUT:
        case UPIU_TRANSACTION_TASK_REQ:
@@ -102,9 +99,12 @@ static int ufs_bsg_request(struct bsg_job *job)
                                               &bsg_reply->upiu_rsp, msgcode,
                                               desc_buff, &desc_len, desc_op);
                if (ret)
-                       dev_err(hba->dev,
-                               "exe raw upiu: error code %d\n", ret);
-
+                       dev_err(hba->dev, "exe raw upiu: error code %d\n", ret);
+               else if (desc_op == UPIU_QUERY_OPCODE_READ_DESC && desc_len)
+                       bsg_reply->reply_payload_rcv_len =
+                               sg_copy_from_buffer(job->request_payload.sg_list,
+                                                   job->request_payload.sg_cnt,
+                                                   desc_buff, desc_len);
                break;
        case UPIU_TRANSACTION_UIC_CMD:
                memcpy(&uc, &bsg_request->upiu_req.uc, UIC_CMD_SIZE);
@@ -123,20 +123,9 @@ static int ufs_bsg_request(struct bsg_job *job)
                break;
        }
 
+out:
        ufshcd_rpm_put_sync(hba);
-
-       if (!desc_buff)
-               goto out;
-
-       if (desc_op == UPIU_QUERY_OPCODE_READ_DESC && desc_len)
-               bsg_reply->reply_payload_rcv_len =
-                       sg_copy_from_buffer(job->request_payload.sg_list,
-                                           job->request_payload.sg_cnt,
-                                           desc_buff, desc_len);
-
        kfree(desc_buff);
-
-out:
        bsg_reply->result = ret;
        job->reply_len = sizeof(struct ufs_bsg_reply);
        /* complete the job here only if no error */