提交 7a691bd3 编写于 作者: J James Bottomley

[SCSI] avoid overflows in disk size calculations

Be more careful about doing the arithmetic in the non-LBD case.
Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
上级 d578a425
......@@ -1253,14 +1253,13 @@ sd_read_capacity(struct scsi_disk *sdkp, char *diskname,
* 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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册