Re: [PATCH v2 3/3] scsi: sd: Fix interpretation of VPD B9h length

Damien Le Moal
2022-06-07T00:44:25Z

On 2022/06/03 10:30, Damien Le Moal wrote:
> On 6/3/22 07:51, Tyler Erickson wrote:
>> 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
>>
>> Cc: stable@vger.kernel.org
>> Fixes: e815d36548f0 ("scsi: sd: add concurrent positioning ranges support")
>> Signed-off-by: Tyler Erickson <tyler.erickson@seagate.com>
>> Reviewed-by: Muhammad Ahmad <muhammad.ahmad@seagate.com>
>> Tested-by: Michael English <michael.english@seagate.com>
>> ---
>> drivers/scsi/sd.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
>> index 749316462075..f25b0cc5dd21 100644
>> --- a/drivers/scsi/sd.c
>> +++ b/drivers/scsi/sd.c
>> @@ -3072,7 +3072,7 @@ static void sd_read_cpr(struct scsi_disk *sdkp)
>> 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");
>
> Martin,
>
> If you take this one:
>
> Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
>

Martin,

Ping ?
How do you want to handle this one ? I can take it if you want (need your
acked-by) or you can take it through the scsi tree.

Thanks !

--
Damien Le Moal
Western Digital Research