[lvc-project] [PATCH] usb: storage: isd200: fix sloppy typing in isd200_scsi_to_ata()
Sergey Shtylyov
s.shtylyov at omp.ru
Fri Mar 22 18:12:35 MSK 2024
On 3/22/24 5:38 PM, Alan Stern wrote:
[...]
>>>> When isd200_scsi_to_ata() emulates the SCSI READ CAPACITY command, the
>>>> capacity local variable is needlessly typed as *unsigned long* -- which
>>>> is 32-bit type on the 32-bit arches and 64-bit type on the 64-bit arches;
>>>> this variable's value should always fit into 32 bits for both the ATA and
>>>> the SCSI capacity data...
>>>>
>>>> While at it, arrange the local variable declarations in the reverse Xmas
>>>> tree order...
>>>>
>>>> Found by Linux Verification Center (linuxtesting.org) with the SVACE static
>>>> analysis tool.
>>>>
>>>> Signed-off-by: Sergey Shtylyov <s.shtylyov at omp.ru>
>>>>
>>>> ---
>>>> drivers/usb/storage/isd200.c | 2 +-
>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> Index: usb/drivers/usb/storage/isd200.c
>>>> ===================================================================
>>>> --- usb.orig/drivers/usb/storage/isd200.c
>>>> +++ usb/drivers/usb/storage/isd200.c
>>>> @@ -1283,8 +1283,8 @@ static int isd200_scsi_to_ata(struct scs
>>>>
>>>> case READ_CAPACITY:
>>>> {
>>>> - unsigned long capacity;
>>>> struct read_capacity_data readCapacityData;
>>>> + u32 capacity;
>>>
>>> This is a bit peculiar. Why bother to change the type of the capacity
>>> variable without also changing the types of lba and blockCount at the
>>> start of the routine?
>>
>> The reason is simple: Svace didn't complain about those.
>
> You shouldn't trust automated code checkers too far. Always verify
I never do. In this case, Svace suggested a cast to 64-bit type to
avoid what it suspected to be an overflow. :-)
> their reports, and look around the vicinity to see if they missed
> something obvious.
Yeah, I forgot to do that. :-)
>> I'll fix
>> them up in v2 if you're not opposed to this patch...
>
> Sure, go ahead.
OK! :-)
> Alan Stern
MBR. Sergey
More information about the lvc-project
mailing list