In sd_revalidate_disk, if sdkp->media_present is set, then sdkp->capacity should not be zero. Therefore, jump to end of if block and skip remaining checks/calls. Fixes a KMSAN-found uninit-value bug reported by syzbot at: https://syzkaller.appspot.com/bug?id=197c8a3a2de61720a9b500ad485a7aba0065c6af Reported-by: syzbot+6b02c1da3865f750164a@xxxxxxxxxxxxxxxxxxxxxxxxx Signed-off-by: Phillip Potter <phil@xxxxxxxxxxxxxxxx> --- drivers/scsi/sd.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index ed0b1bb99f08..a7fe53f492ae 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -3201,6 +3201,8 @@ static int sd_revalidate_disk(struct gendisk *disk) */ if (sdkp->media_present) { sd_read_capacity(sdkp, buffer); + if (!sdkp->capacity) + goto present_block_end; /* * set the default to rotational. All non-rotational devices @@ -3226,6 +3228,7 @@ static int sd_revalidate_disk(struct gendisk *disk) sd_read_write_same(sdkp, buffer); sd_read_security(sdkp, buffer); } +present_block_end: /* * We now have all cache related info, determine how we deal -- 2.30.2