diff mbox series

[-next,v3] scsi: sd: Fix an incorrect type in 'sd_spinup_disk()'

Message ID 20240709093948.9617-1-jiapeng.chong@linux.alibaba.com (mailing list archive)
State Changes Requested
Headers show
Series [-next,v3] scsi: sd: Fix an incorrect type in 'sd_spinup_disk()' | expand

Commit Message

Jiapeng Chong July 9, 2024, 9:39 a.m. UTC
The return value from the call to scsi_execute_cmd() is int. In the
'else if' branch of the function scsi_execute_cmd, it will return -EINVAL.
But the type of "the_result" is "unsigned int", causing the error code to
reverse. Modify the type of "the_result" to solve this problem.

The code featuring the_result as the return value of the function
scsi_execute_cmd is as follows:

the_result = scsi_execute_cmd(sdkp->device, cmd, REQ_OP_DRV_IN, NULL, 0,
			      SD_TIMEOUT, sdkp->max_retries, &exec_args);
if (the_result > 0) {
...
}

./drivers/scsi/sd.c:2333:6-16: WARNING: Unsigned expression compared
with zero: the_result > 0.

Fixes: c1acf38cd11e ("scsi: sd: Have midlayer retry sd_spinup_disk() errors")
Cc: stable@vger.kernel.org
Reported-by: Abaci Robot <abaci@linux.alibaba.com>
Closes: https://bugzilla.openanolis.cn/show_bug.cgi?id=9463
Signed-off-by: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
---
Changes in v3:
  -Amend the commit message, Add "Fixes:" and "Cc: stable" tags.

 drivers/scsi/sd.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Bart Van Assche July 9, 2024, 5:59 p.m. UTC | #1
On 7/9/24 2:39 AM, Jiapeng Chong wrote:
> The return value from the call to scsi_execute_cmd() is int. In the
              ^^^^^
               type

> 'else if' branch of the function scsi_execute_cmd, it will return -EINVAL.
> But the type of "the_result" is "unsigned int", causing the error code to
> reverse. Modify the type of "the_result" to solve this problem.
   ^^^^^^^

What is "reversing an error code"? Did you perhaps mean that the return
value is changed from a negative integer to a positive integer?

> ./drivers/scsi/sd.c:2333:6-16: WARNING: Unsigned expression compared
> with zero: the_result > 0.

Doesn't this patch fix reading uninitialized data? If so, shouldn't that
be mentioned in the patch description?

> Fixes: c1acf38cd11e ("scsi: sd: Have midlayer retry sd_spinup_disk() errors")

Hmm ... that seems incorrect to me. Commit c1acf38cd11e changed the
indentation of "the_result > 0" expressions but did not introduce these.
Is this perhaps the commit that introduced the "the_result > 0"
expressions: ced202f7bd78 ("scsi: core: Stop using DRIVER_ERROR")?

Thanks,

Bart.
diff mbox series

Patch

diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index 979795dad62b..ade8c6cca295 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -2396,7 +2396,7 @@  sd_spinup_disk(struct scsi_disk *sdkp)
 	static const u8 cmd[10] = { TEST_UNIT_READY };
 	unsigned long spintime_expire = 0;
 	int spintime, sense_valid = 0;
-	unsigned int the_result;
+	int the_result;
 	struct scsi_sense_hdr sshdr;
 	struct scsi_failure failure_defs[] = {
 		/* Do not retry Medium Not Present */