diff options
| author | Xie XiuQi <[email protected]> | 2019-04-20 08:34:16 +0000 |
|---|---|---|
| committer | Ingo Molnar <[email protected]> | 2019-04-25 17:58:54 +0000 |
| commit | a860fa7b96e1a1c974556327aa1aee852d434c21 (patch) | |
| tree | 242bb6433d229e091cc9f75d775bdc43e1b0b026 /scripts/gcc-plugins/cyc_complexity_plugin.c | |
| parent | Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net (diff) | |
| download | kernel-a860fa7b96e1a1c974556327aa1aee852d434c21.tar.gz kernel-a860fa7b96e1a1c974556327aa1aee852d434c21.zip | |
sched/numa: Fix a possible divide-by-zero
sched_clock_cpu() may not be consistent between CPUs. If a task
migrates to another CPU, then se.exec_start is set to that CPU's
rq_clock_task() by update_stats_curr_start(). Specifically, the new
value might be before the old value due to clock skew.
So then if in numa_get_avg_runtime() the expression:
'now - p->last_task_numa_placement'
ends up as -1, then the divider '*period + 1' in task_numa_placement()
is 0 and things go bang. Similar to update_curr(), check if time goes
backwards to avoid this.
[ peterz: Wrote new changelog. ]
[ mingo: Tweaked the code comment. ]
Signed-off-by: Xie XiuQi <[email protected]>
Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
Cc: Linus Torvalds <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: [email protected]
Cc: <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Ingo Molnar <[email protected]>
Diffstat (limited to 'scripts/gcc-plugins/cyc_complexity_plugin.c')
0 files changed, 0 insertions, 0 deletions
