Skip to content

Commit f92de9d

Browse files
vonericsenmartinkpetersen
authored andcommitted
scsi: sd: Fix interpretation of VPD B9h length
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/[email protected] Fixes: e815d36 ("scsi: sd: add concurrent positioning ranges support") Cc: [email protected] Tested-by: Michael English <[email protected]> Reviewed-by: Muhammad Ahmad <[email protected]> Reviewed-by: Damien Le Moal <[email protected]> Reviewed-by: Hannes Reinecke <[email protected]> Signed-off-by: Tyler Erickson <[email protected]> Signed-off-by: Christoph Hellwig <[email protected]> Signed-off-by: Martin K. Petersen <[email protected]>
1 parent f2906aa commit f92de9d

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/scsi/sd.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3072,7 +3072,7 @@ static void sd_read_cpr(struct scsi_disk *sdkp)
30723072
goto out;
30733073

30743074
/* We must have at least a 64B header and one 32B range descriptor */
3075-
vpd_len = get_unaligned_be16(&buffer[2]) + 3;
3075+
vpd_len = get_unaligned_be16(&buffer[2]) + 4;
30763076
if (vpd_len > buf_len || vpd_len < 64 + 32 || (vpd_len & 31)) {
30773077
sd_printk(KERN_ERR, sdkp,
30783078
"Invalid Concurrent Positioning Ranges VPD page\n");

0 commit comments

Comments
 (0)