From: James Bottomley Date: Fri, 28 Oct 2005 18:17:30 +0000 (-0500) Subject: [SCSI] avoid overflows in disk size calculations X-Git-Tag: v2.6.15-rc1~723^2~2^2~43 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7a691bd34130920bef4d118a3f555ebc48544a63;p=linux-2.6 [SCSI] avoid overflows in disk size calculations Be more careful about doing the arithmetic in the non-LBD case. Signed-off-by: James Bottomley --- diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 9a1dc0cea0..98da5c8057 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -1253,14 +1253,13 @@ got_data: * Jacques Gelinas (Jacques@solucorp.qc.ca) */ int hard_sector = sector_size; - sector_t sz = sdkp->capacity * (hard_sector/256); + sector_t sz = (sdkp->capacity/2) * (hard_sector/256); request_queue_t *queue = sdp->request_queue; - sector_t mb; + sector_t mb = sz; blk_queue_hardsect_size(queue, hard_sector); /* avoid 64-bit division on 32-bit platforms */ - mb = sz >> 1; - sector_div(sz, 1250); + sector_div(sz, 625); mb -= sz - 974; sector_div(mb, 1950);