diff options
author | H. Peter Anvin <hpa@zytor.com> | 2008-10-14 14:34:20 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-10-23 12:42:20 -0400 |
commit | 520a2c2741747062e75f91cd0faddb564fbc64d2 (patch) | |
tree | ee432a78dd07631a4df63abe4ae2958d2c18607e /drivers/scsi | |
parent | a8659597bf744b0f8d2560e2a734b5c941569e0e (diff) |
[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 <hpa@zytor.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r-- | drivers/scsi/sd.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 7e22aa7b8b8a..7ba70bef8b5d 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c | |||
@@ -1436,7 +1436,7 @@ got_data: | |||
1436 | 1436 | ||
1437 | { | 1437 | { |
1438 | char cap_str_2[10], cap_str_10[10]; | 1438 | char cap_str_2[10], cap_str_10[10]; |
1439 | u64 sz = sdkp->capacity << ffz(~sector_size); | 1439 | u64 sz = (u64)sdkp->capacity << ilog2(sector_size); |
1440 | 1440 | ||
1441 | string_get_size(sz, STRING_UNITS_2, cap_str_2, | 1441 | string_get_size(sz, STRING_UNITS_2, cap_str_2, |
1442 | sizeof(cap_str_2)); | 1442 | sizeof(cap_str_2)); |