]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
scsi: sd: Fix off-by-one error in sd_read_block_characteristics()
authorMartin Wilck <mwilck@suse.com>
Thu, 12 Sep 2024 13:43:08 +0000 (15:43 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 4 Oct 2024 14:33:31 +0000 (16:33 +0200)
commit f81eaf08385ddd474a2f41595a7757502870c0eb upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/scsi/sd.c

index 7d2a294ebc3d79e7f3ccc71c18edee7067d47a35..5dd100175ec616948042b3532cacc268893b9c85 100644 (file)
@@ -3283,7 +3283,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;
        }