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)
committerDanny Wood <danwood76@gmail.com>
Tue, 29 Jan 2019 13:17:03 +0000 (13:17 +0000)
commitcb58bee616a48718a54bf1e282e9f9cbf5671d0d
treeff550bb65bd813d52f6a65e1a4ee7f895784d914
parentced30f69901ea2500bf65f5cccb7f34f8ef830a6
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: Willy Tarreau <w@1wt.eu>
drivers/scsi/sd.c