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

Commit e70727e4 authored by David Lambert's avatar David Lambert Committed by David Woodhouse
Browse files

mtd: speedtest: fix integer overflow



32-bit integers used in 'calc_speed()' may overflow and lead to
incorrect results. Use 64-bit integers instead.

Signed-off-by: default avatarDavid Lambert <dave@lambsys.com>
Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
parent 5d9d9936
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -314,16 +314,16 @@ static inline void stop_timing(void)

static long calc_speed(void)
{
	long ms, k, speed;
	uint64_t k;
	long ms;

	ms = (finish.tv_sec - start.tv_sec) * 1000 +
	     (finish.tv_usec - start.tv_usec) / 1000;
	k = goodebcnt * mtd->erasesize / 1024;
	if (ms)
		speed = (k * 1000) / ms;
	else
		speed = 0;
	return speed;
	if (ms == 0)
		return 0;
	k = goodebcnt * (mtd->erasesize / 1024) * 1000;
	do_div(k, ms);
	return k;
}

static int scan_for_bad_eraseblocks(void)