[lvc-project] [PATCH] usb: storage: isd200: fix sloppy typing in isd200_scsi_to_ata()

Alan Stern stern at rowland.harvard.edu
Fri Mar 22 03:57:38 MSK 2024


On Thu, Mar 21, 2024 at 11:43:37PM +0300, Sergey Shtylyov 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?

Alan Stern



More information about the lvc-project mailing list