scsi: sd: Fix capacity calculation with 32-bit sector_t
authorMartin K. Petersen <martin.petersen@oracle.com>
Tue, 4 Apr 2017 14:42:30 +0000 (10:42 -0400)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 7 Apr 2017 21:07:16 +0000 (17:07 -0400)
commit7c856152cb92f8eee2df29ef325a1b1f43161aff
treee90a0cc26a6aabfbcb4cc8b064ea6e4575aca206
parentbf6061b17a8d47ef0d9344d3ef576a4ff0edf793
scsi: sd: Fix capacity calculation with 32-bit sector_t

We previously made sure that the reported disk capacity was less than
0xffffffff blocks when the kernel was not compiled with large sector_t
support (CONFIG_LBDAF). However, this check assumed that the capacity
was reported in units of 512 bytes.

Add a sanity check function to ensure that we only enable disks if the
entire reported capacity can be expressed in terms of sector_t.

Cc: <stable@vger.kernel.org>
Reported-by: Steve Magnani <steve.magnani@digidescorp.com>
Cc: Bart Van Assche <Bart.VanAssche@sandisk.com>
Reviewed-by: Bart Van Assche <Bart.VanAssche@sandisk.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/sd.c