Commit dceaef94 authored by Damien Le Moal's avatar Damien Le Moal Committed by Martin K. Petersen

scsi: mpt3sas: Fix _ctl_set_task_mid() TaskMID check

The TaskMID field of struct Mpi2SCSITaskManagementRequest_t is a 16-bit
little endian value. Fix the search loop in _ctl_set_task_mid() to add a
cpu_to_le16() conversion before checking the value of TaskMID to avoid
sparse warnings. While at it, simplify the search loop code to remove an
unnecessarily complicated if condition.

Link: https://lore.kernel.org/r/20220307234854.148145-2-damien.lemoal@opensource.wdc.comSigned-off-by: default avatarDamien Le Moal <damien.lemoal@opensource.wdc.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent ad14649f
...@@ -578,7 +578,7 @@ static int ...@@ -578,7 +578,7 @@ static int
_ctl_set_task_mid(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command *karg, _ctl_set_task_mid(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command *karg,
Mpi2SCSITaskManagementRequest_t *tm_request) Mpi2SCSITaskManagementRequest_t *tm_request)
{ {
u8 found = 0; bool found = false;
u16 smid; u16 smid;
u16 handle; u16 handle;
struct scsi_cmnd *scmd; struct scsi_cmnd *scmd;
...@@ -600,6 +600,7 @@ _ctl_set_task_mid(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command *karg, ...@@ -600,6 +600,7 @@ _ctl_set_task_mid(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command *karg,
handle = le16_to_cpu(tm_request->DevHandle); handle = le16_to_cpu(tm_request->DevHandle);
for (smid = ioc->scsiio_depth; smid && !found; smid--) { for (smid = ioc->scsiio_depth; smid && !found; smid--) {
struct scsiio_tracker *st; struct scsiio_tracker *st;
__le16 task_mid;
scmd = mpt3sas_scsih_scsi_lookup_get(ioc, smid); scmd = mpt3sas_scsih_scsi_lookup_get(ioc, smid);
if (!scmd) if (!scmd)
...@@ -618,10 +619,10 @@ _ctl_set_task_mid(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command *karg, ...@@ -618,10 +619,10 @@ _ctl_set_task_mid(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command *karg,
* first outstanding smid will be picked up. Otherwise, * first outstanding smid will be picked up. Otherwise,
* targeted smid will be the one. * targeted smid will be the one.
*/ */
if (!tm_request->TaskMID || tm_request->TaskMID == st->smid) { task_mid = cpu_to_le16(st->smid);
tm_request->TaskMID = cpu_to_le16(st->smid); if (!tm_request->TaskMID)
found = 1; tm_request->TaskMID = task_mid;
} found = tm_request->TaskMID == task_mid;
} }
if (!found) { if (!found) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment