diff options
author | Martin Wilck <mwilck@suse.com> | 2024-09-12 15:43:08 +0200 |
---|---|---|
committer | Martin K. Petersen <martin.petersen@oracle.com> | 2024-09-12 20:55:53 -0400 |
commit | f81eaf08385ddd474a2f41595a7757502870c0eb (patch) | |
tree | 0887a467da8db0c7852a93c3826b8c29adc77a16 | |
parent | a141c17a543332fc1238eb5cba562bfc66879126 (diff) | |
download | linux-stable-f81eaf08385ddd474a2f41595a7757502870c0eb.tar.gz linux-stable-f81eaf08385ddd474a2f41595a7757502870c0eb.tar.bz2 linux-stable-f81eaf08385ddd474a2f41595a7757502870c0eb.zip |
scsi: sd: Fix off-by-one error in sd_read_block_characteristics()
Ff the device returns page 0xb1 with length 8 (happens with qemu v2.x, for
example), sd_read_block_characteristics() may attempt an out-of-bounds
memory access when accessing the zoned field at offset 8.
Fixes: 7fb019c46eee ("scsi: sd: Switch to using scsi_device VPD pages")
Cc: stable@vger.kernel.org
Signed-off-by: Martin Wilck <mwilck@suse.com>
Link: https://lore.kernel.org/r/20240912134308.282824-1-mwilck@suse.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-rw-r--r-- | drivers/scsi/sd.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 43a723164fc5..64aaf24c6398 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -3402,7 +3402,7 @@ static void sd_read_block_characteristics(struct scsi_disk *sdkp, rcu_read_lock(); vpd = rcu_dereference(sdkp->device->vpd_pgb1); - if (!vpd || vpd->len < 8) { + if (!vpd || vpd->len <= 8) { rcu_read_unlock(); return; } |