> On Oct 3, 2017, at 3:48 AM, Christoph Hellwig <h...@lst.de> wrote:
> 
> Always use bsg_job->reply instead of scsi_req(bsg_job->req)->sense), as
> they always point to the same memory.
> 
> Never set scsi_req(bsg_job->req)->result and we'll set that value through
> bsg_job_done.
> 
> Signed-off-by: Christoph Hellwig <h...@lst.de>
> ---
> drivers/scsi/qla2xxx/qla_bsg.c | 10 ++++------
> drivers/scsi/qla2xxx/qla_isr.c | 12 +++---------
> drivers/scsi/qla2xxx/qla_mr.c  |  3 +--
> 3 files changed, 8 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/scsi/qla2xxx/qla_bsg.c b/drivers/scsi/qla2xxx/qla_bsg.c
> index 2ea0ef93f5cb..92a951fcd076 100644
> --- a/drivers/scsi/qla2xxx/qla_bsg.c
> +++ b/drivers/scsi/qla2xxx/qla_bsg.c
> @@ -919,9 +919,9 @@ qla2x00_process_loopback(struct bsg_job *bsg_job)
> 
>       bsg_job->reply_len = sizeof(struct fc_bsg_reply) +
>           sizeof(response) + sizeof(uint8_t);
> -     fw_sts_ptr = ((uint8_t *)scsi_req(bsg_job->req)->sense) +
> -         sizeof(struct fc_bsg_reply);
> -     memcpy(fw_sts_ptr, response, sizeof(response));
> +     fw_sts_ptr = bsg_job->reply + sizeof(struct fc_bsg_reply);
> +     memcpy(bsg_job->reply + sizeof(struct fc_bsg_reply), response,
> +                     sizeof(response));
>       fw_sts_ptr += sizeof(response);
>       *fw_sts_ptr = command_sent;
> 
> @@ -2554,13 +2554,11 @@ qla24xx_bsg_timeout(struct bsg_job *bsg_job)
>                                               ql_log(ql_log_warn, vha, 0x7089,
>                                                   "mbx abort_command "
>                                                   "failed.\n");
> -                                             scsi_req(bsg_job->req)->result =
>                                               bsg_reply->result = -EIO;
>                                       } else {
>                                               ql_dbg(ql_dbg_user, vha, 0x708a,
>                                                   "mbx abort_command "
>                                                   "success.\n");
> -                                             scsi_req(bsg_job->req)->result =
>                                               bsg_reply->result = 0;
>                                       }
>                                       spin_lock_irqsave(&ha->hardware_lock, 
> flags);
> @@ -2571,7 +2569,7 @@ qla24xx_bsg_timeout(struct bsg_job *bsg_job)
>       }
>       spin_unlock_irqrestore(&ha->hardware_lock, flags);
>       ql_log(ql_log_info, vha, 0x708b, "SRB not found to abort.\n");
> -     scsi_req(bsg_job->req)->result = bsg_reply->result = -ENXIO;
> +      bsg_reply->result = -ENXIO;
>       return 0;
> 
> done:
> diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
> index 9d9668aac6f6..886c7085fada 100644
> --- a/drivers/scsi/qla2xxx/qla_isr.c
> +++ b/drivers/scsi/qla2xxx/qla_isr.c
> @@ -1543,7 +1543,6 @@ qla24xx_els_ct_entry(scsi_qla_host_t *vha, struct 
> req_que *req,
>       struct fc_bsg_reply *bsg_reply;
>       uint16_t comp_status;
>       uint32_t fw_status[3];
> -     uint8_t* fw_sts_ptr;
>       int res;
> 
>       sp = qla2x00_get_sp_from_handle(vha, func, req, pkt);
> @@ -1604,11 +1603,7 @@ qla24xx_els_ct_entry(scsi_qla_host_t *vha, struct 
> req_que *req,
>                           type, sp->handle, comp_status, fw_status[1], 
> fw_status[2],
>                           le16_to_cpu(((struct els_sts_entry_24xx *)
>                               pkt)->total_byte_count));
> -                     fw_sts_ptr = ((uint8_t*)scsi_req(bsg_job->req)->sense) +
> -                             sizeof(struct fc_bsg_reply);
> -                     memcpy( fw_sts_ptr, fw_status, sizeof(fw_status));
> -             }
> -             else {
> +             } else {
>                       ql_dbg(ql_dbg_user, vha, 0x5040,
>                           "ELS-CT pass-through-%s error hdl=%x 
> comp_status-status=0x%x "
>                           "error subcode 1=0x%x error subcode 2=0x%x.\n",
> @@ -1619,10 +1614,9 @@ qla24xx_els_ct_entry(scsi_qla_host_t *vha, struct 
> req_que *req,
>                                   pkt)->error_subcode_2));
>                       res = DID_ERROR << 16;
>                       bsg_reply->reply_payload_rcv_len = 0;
> -                     fw_sts_ptr = ((uint8_t*)scsi_req(bsg_job->req)->sense) +
> -                                     sizeof(struct fc_bsg_reply);
> -                     memcpy( fw_sts_ptr, fw_status, sizeof(fw_status));
>               }
> +             memcpy(bsg_job->reply + sizeof(struct fc_bsg_reply),
> +                             fw_status, sizeof(fw_status));
>               ql_dump_buffer(ql_dbg_user + ql_dbg_buffer, vha, 0x5056,
>                               (uint8_t *)pkt, sizeof(*pkt));
>       }
> diff --git a/drivers/scsi/qla2xxx/qla_mr.c b/drivers/scsi/qla2xxx/qla_mr.c
> index e23a3d4c36f3..d5da3981cefe 100644
> --- a/drivers/scsi/qla2xxx/qla_mr.c
> +++ b/drivers/scsi/qla2xxx/qla_mr.c
> @@ -2245,8 +2245,7 @@ qlafx00_ioctl_iosb_entry(scsi_qla_host_t *vha, struct 
> req_que *req,
>               memcpy(fstatus.reserved_3,
>                   pkt->reserved_2, 20 * sizeof(uint8_t));
> 
> -             fw_sts_ptr = ((uint8_t *)scsi_req(bsg_job->req)->sense) +
> -                 sizeof(struct fc_bsg_reply);
> +             fw_sts_ptr = bsg_job->reply + sizeof(struct fc_bsg_reply);
> 
>               memcpy(fw_sts_ptr, (uint8_t *)&fstatus,
>                   sizeof(struct qla_mt_iocb_rsp_fx00));
> -- 
> 2.14.1
> 

Looks Good.

Reviewed-By: Himanshu Madhani <himanshu.madh...@cavium.com>
Tested-By: Himanshu Madhani <himanshu.madh...@cavium.com>

Thanks,
- Himanshu

Reply via email to