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@xxxxxx> --- 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; usb_stor_dbg(us, " ATA OUT - SCSIOP_READ_CAPACITY\n");