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 |
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 --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 */
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(-)