This is a note to let you know that I've just added the patch titled scsi: sd: Fix interpretation of VPD B9h length to the 5.17-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: scsi-sd-fix-interpretation-of-vpd-b9h-length.patch and it can be found in the queue-5.17 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From f92de9d110429e39929a49240d823251c2fe903e Mon Sep 17 00:00:00 2001 From: Tyler Erickson <tyler.erickson@xxxxxxxxxxx> Date: Thu, 2 Jun 2022 16:51:13 -0600 Subject: scsi: sd: Fix interpretation of VPD B9h length From: Tyler Erickson <tyler.erickson@xxxxxxxxxxx> commit f92de9d110429e39929a49240d823251c2fe903e upstream. Fixing the interpretation of the length of the B9h VPD page (Concurrent Positioning Ranges). Adding 4 is necessary as the first 4 bytes of the page is the header with page number and length information. Adding 3 was likely a misinterpretation of the SBC-5 specification which sets all offsets starting at zero. This fixes the error in dmesg: [ 9.014456] sd 1:0:0:0: [sda] Invalid Concurrent Positioning Ranges VPD page Link: https://lore.kernel.org/r/20220602225113.10218-4-tyler.erickson@xxxxxxxxxxx Fixes: e815d36548f0 ("scsi: sd: add concurrent positioning ranges support") Cc: stable@xxxxxxxxxxxxxxx Tested-by: Michael English <michael.english@xxxxxxxxxxx> Reviewed-by: Muhammad Ahmad <muhammad.ahmad@xxxxxxxxxxx> Reviewed-by: Damien Le Moal <damien.lemoal@xxxxxxxxxxxxxxxxxx> Reviewed-by: Hannes Reinecke <hare@xxxxxxx> Signed-off-by: Tyler Erickson <tyler.erickson@xxxxxxxxxxx> Signed-off-by: Christoph Hellwig <hch@xxxxxx> Signed-off-by: Martin K. Petersen <martin.petersen@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/scsi/sd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -3171,7 +3171,7 @@ static void sd_read_cpr(struct scsi_disk goto out; /* We must have at least a 64B header and one 32B range descriptor */ - vpd_len = get_unaligned_be16(&buffer[2]) + 3; + vpd_len = get_unaligned_be16(&buffer[2]) + 4; if (vpd_len > buf_len || vpd_len < 64 + 32 || (vpd_len & 31)) { sd_printk(KERN_ERR, sdkp, "Invalid Concurrent Positioning Ranges VPD page\n"); Patches currently in stable-queue which might be from tyler.erickson@xxxxxxxxxxx are queue-5.17/libata-fix-reading-concurrent-positioning-ranges-log.patch queue-5.17/libata-fix-translation-of-concurrent-positioning-ranges.patch queue-5.17/scsi-sd-fix-interpretation-of-vpd-b9h-length.patch