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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 21 Apr 2017 07:30:05 +0000 (09:30 +0200)
commitb689dfbed8c8432a18c73fc261c030d8b3e24e00
tree476917c1f8d340870dc9fa2c3fe0607a44b935e3
parent448961955592c46f1490fb6ca8d3e52ce17e6222
scsi: sd: Fix capacity calculation with 32-bit sector_t

commit 7c856152cb92f8eee2df29ef325a1b1f43161aff upstream.

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.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/scsi/sd.c