The "(&ctio->u.status1.sense_data)[i]" where i >= 0 expressions in
qlt_send_resp_ctio() are probably typos and should have been
"(&ctio->u.status1.sense_data[4 * i])" instead. Instead of only
fixing these typos, modify the code for storing sense data such that
it becomes easy to read. This patch fixes a Coverity complaint about
accessing an array outside its bounds.

Cc: Himanshu Madhani <hmadh...@marvell.com>
Cc: Giridhar Malavali <gmalav...@marvell.com>
Fixes: be25152c0d9e ("qla2xxx: Improve T10-DIF/PI handling in driver.") # v4.11.
Signed-off-by: Bart Van Assche <bvanass...@acm.org>
---
 drivers/scsi/qla2xxx/qla_target.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_target.c 
b/drivers/scsi/qla2xxx/qla_target.c
index 302bc43cc061..ed02ac51183d 100644
--- a/drivers/scsi/qla2xxx/qla_target.c
+++ b/drivers/scsi/qla2xxx/qla_target.c
@@ -2329,14 +2329,14 @@ void qlt_send_resp_ctio(struct qla_qpair *qpair, struct 
qla_tgt_cmd *cmd,
                ctio->u.status1.scsi_status |=
                    cpu_to_le16(SS_RESIDUAL_UNDER);
 
-       /* Response code and sense key */
-       put_unaligned_le32(((0x70 << 24) | (sense_key << 8)),
-           (&ctio->u.status1.sense_data)[0]);
+       /* Fixed format sense data. */
+       ctio->u.status1.sense_data[0] = 0x70;
+       ctio->u.status1.sense_data[2] = sense_key;
        /* Additional sense length */
-       put_unaligned_le32(0x0a, (&ctio->u.status1.sense_data)[1]);
+       ctio->u.status1.sense_data[7] = 0xa;
        /* ASC and ASCQ */
-       put_unaligned_le32(((asc << 24) | (ascq << 16)),
-           (&ctio->u.status1.sense_data)[3]);
+       ctio->u.status1.sense_data[12] = asc;
+       ctio->u.status1.sense_data[13] = ascq;
 
        /* Memory Barrier */
        wmb();
-- 
2.21.0.196.g041f5ea1cf98

Reply via email to