From: Omar Sandoval Date: Fri, 28 Sep 2018 16:22:50 +0000 (-0700) Subject: kyber: fix integer overflow of latency targets on 32-bit X-Git-Tag: v4.20-rc1~191^2~121 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=f0a0cdddb14c7a32e7ca68f45fbc44aa347e959d;p=linux.git kyber: fix integer overflow of latency targets on 32-bit NSEC_PER_SEC has type long, so 5 * NSEC_PER_SEC is calculated as a long. However, 5 seconds is 5,000,000,000 nanoseconds, which overflows a 32-bit long. Make sure all of the targets are calculated as 64-bit values. Fixes: 6e25cb01ea20 ("kyber: implement improved heuristics") Reported-by: Stephen Rothwell Signed-off-by: Omar Sandoval Signed-off-by: Jens Axboe --- diff --git a/block/kyber-iosched.c b/block/kyber-iosched.c index 2b62e362fb36..eccac01a10b6 100644 --- a/block/kyber-iosched.c +++ b/block/kyber-iosched.c @@ -79,9 +79,9 @@ static const unsigned int kyber_depth[] = { * Default latency targets for each scheduling domain. */ static const u64 kyber_latency_targets[] = { - [KYBER_READ] = 2 * NSEC_PER_MSEC, - [KYBER_WRITE] = 10 * NSEC_PER_MSEC, - [KYBER_DISCARD] = 5 * NSEC_PER_SEC, + [KYBER_READ] = 2ULL * NSEC_PER_MSEC, + [KYBER_WRITE] = 10ULL * NSEC_PER_MSEC, + [KYBER_DISCARD] = 5ULL * NSEC_PER_SEC, }; /*