sched/core: Correct off by one bug in load migration calculation
authorThomas Gleixner <tglx@linutronix.de>
Tue, 12 Jul 2016 16:33:56 +0000 (18:33 +0200)
committerIngo Molnar <mingo@kernel.org>
Wed, 13 Jul 2016 12:58:20 +0000 (14:58 +0200)
commitd60585c5766e9620d5d83e2b25dc042c7bdada2c
treeace0971cf7c7dcab339997d82ed635b8486dcb28
parent92d21ac74a9e3c09b0b01c764e530657e4c85c49
sched/core: Correct off by one bug in load migration calculation

The move of calc_load_migrate() from CPU_DEAD to CPU_DYING did not take into
account that the function is now called from a thread running on the outgoing
CPU. As a result a cpu unplug leakes a load of 1 into the global load
accounting mechanism.

Fix it by adjusting for the currently running thread which calls
calc_load_migrate().

Reported-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Peter Zijlstra <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
Cc: rt@linutronix.de
Cc: shreyas@linux.vnet.ibm.com
Fixes: e9cd8fa4fcfd: ("sched/migration: Move calc_load_migrate() into CPU_DYING")
Link: http://lkml.kernel.org/r/alpine.DEB.2.11.1607121744350.4083@nanos
Signed-off-by: Ingo Molnar <mingo@kernel.org>
kernel/sched/core.c
kernel/sched/loadavg.c
kernel/sched/sched.h