summaryrefslogtreecommitdiffstats
path: root/drivers/scsi
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-13 02:55:53 +0200
commitf81eaf08385ddd474a2f41595a7757502870c0eb (patch)
tree0887a467da8db0c7852a93c3826b8c29adc77a16 /drivers/scsi
parentscsi: pm8001: Do not overwrite PCI queue mapping (diff)
downloadlinux-f81eaf08385ddd474a2f41595a7757502870c0eb.tar.xz
linux-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>
Diffstat (limited to 'drivers/scsi')
-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;
}