[SCSI] avoid overflows in disk size calculations

Be more careful about doing the arithmetic in the non-LBD case.

Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
James Bottomley 2005-10-28 13:17:30 -05:00
parent d578a4258b
commit 7a691bd341
1 changed files with 3 additions and 4 deletions

View File

@ -1253,14 +1253,13 @@ got_data:
* Jacques Gelinas (Jacques@solucorp.qc.ca) * Jacques Gelinas (Jacques@solucorp.qc.ca)
*/ */
int hard_sector = sector_size; 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; request_queue_t *queue = sdp->request_queue;
sector_t mb; sector_t mb = sz;
blk_queue_hardsect_size(queue, hard_sector); blk_queue_hardsect_size(queue, hard_sector);
/* avoid 64-bit division on 32-bit platforms */ /* avoid 64-bit division on 32-bit platforms */
mb = sz >> 1; sector_div(sz, 625);
sector_div(sz, 1250);
mb -= sz - 974; mb -= sz - 974;
sector_div(mb, 1950); sector_div(mb, 1950);