Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7a691bd3 authored by James Bottomley's avatar James Bottomley
Browse files

[SCSI] avoid overflows in disk size calculations



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

Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent d578a425
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -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);