summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Wilck <mwilck@suse.com>2024-09-12 15:43:08 +0200
committerMartin K. Petersen <martin.petersen@oracle.com>2024-09-12 20:55:53 -0400
commitf81eaf08385ddd474a2f41595a7757502870c0eb (patch)
tree0887a467da8db0c7852a93c3826b8c29adc77a16
parenta141c17a543332fc1238eb5cba562bfc66879126 (diff)
downloadlinux-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.c2
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;
}