--- linux-4.4/kernel/sched/loadavg.c.orig 2016-01-21 09:11:15.357421120 +0100 +++ linux-4.4/kernel/sched/loadavg.c 2016-01-22 02:25:52.968218198 +0100 @@ -99,10 +99,12 @@ long calc_load_fold_active(struct rq *th static unsigned long calc_load(unsigned long load, unsigned long exp, unsigned long active) { - load *= exp; - load += active * (FIXED_1 - exp); - load += 1UL << (FSHIFT - 1); - return load >> FSHIFT; + long unsigned newload; + + newload = load * exp + active * (FIXED_1 - exp); + if (active >= load) + newload += FIXED_1-1; + return newload / FIXED_1; } #ifdef CONFIG_NO_HZ_COMMON