Re: [PATCH] scsi: sr: Fix a potential uninit-value in sr_get_events()

From: Bart Van Assche
Date: Wed May 31 2023 - 18:44:24 EST


On 5/31/23 09:43, Shigeru Yoshida wrote:
diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c
index 12869e6d4ebd..86b43c069a44 100644
--- a/drivers/scsi/sr.c
+++ b/drivers/scsi/sr.c
@@ -177,10 +177,13 @@ static unsigned int sr_get_events(struct scsi_device *sdev)
result = scsi_execute_cmd(sdev, cmd, REQ_OP_DRV_IN, buf, sizeof(buf),
SR_TIMEOUT, MAX_RETRIES, &exec_args);
+ if (result)
+ return 0;
+
if (scsi_sense_valid(&sshdr) && sshdr.sense_key == UNIT_ATTENTION)
return DISK_EVENT_MEDIA_CHANGE;
- if (result || be16_to_cpu(eh->data_len) < sizeof(*med))
+ if (be16_to_cpu(eh->data_len) < sizeof(*med))
return 0;

I think this change is wrong because it introduces an unintended behavior
change. A better solution is probably to zero-initialize sshdr before
scsi_execute_cmd() is called.

Thanks,

Bart.