From: H. Peter Anvin Date: Tue, 14 Oct 2008 18:34:20 +0000 (-0700) Subject: [SCSI] sd: fix computation of the full size of the device X-Git-Tag: v2.6.28-rc1~11^2 X-Git-Url: http://www.pilppa.org/gitweb/gitweb.cgi?p=linux-2.6-omap-h63xx.git;a=commitdiff_plain;h=520a2c2741747062e75f91cd0faddb564fbc64d2 [SCSI] sd: fix computation of the full size of the device When computing the full size of the device, we need to cast sdkp->capacity before shifting, since in some configurations sector_t can be a 32-bit number. Also, change ffz(~x) to the more idiomatic ilog2(x). Signed-off-by: H. Peter Anvin Signed-off-by: James Bottomley --- diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 7e22aa7b8b8..7ba70bef8b5 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -1436,7 +1436,7 @@ got_data: { char cap_str_2[10], cap_str_10[10]; - u64 sz = sdkp->capacity << ffz(~sector_size); + u64 sz = (u64)sdkp->capacity << ilog2(sector_size); string_get_size(sz, STRING_UNITS_2, cap_str_2, sizeof(cap_str_2));