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: 9928815a9642 ("kyber: implement improved heuristics")
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
* 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,
};
/*