]> git.baikalelectronics.ru Git - kernel.git/commit
sched: Fix possible divide by zero in avg_atom() calculation
authorMateusz Guzik <mguzik@redhat.com>
Sat, 14 Jun 2014 13:00:09 +0000 (15:00 +0200)
committerIngo Molnar <mingo@kernel.org>
Wed, 16 Jul 2014 11:36:07 +0000 (13:36 +0200)
commit956c971fa4caa32b6ac348a24b5fb32ee9854911
treeaee41b518d3cef411ebdf4bf385d28858a5fa759
parentc576559e9af7e8d769cdfbc98b753d47d0f6af0e
sched: Fix possible divide by zero in avg_atom() calculation

proc_sched_show_task() does:

  if (nr_switches)
do_div(avg_atom, nr_switches);

nr_switches is unsigned long and do_div truncates it to 32 bits, which
means it can test non-zero on e.g. x86-64 and be truncated to zero for
division.

Fix the problem by using div64_ul() instead.

As a side effect calculations of avg_atom for big nr_switches are now correct.

Signed-off-by: Mateusz Guzik <mguzik@redhat.com>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Cc: stable@vger.kernel.org
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: http://lkml.kernel.org/r/1402750809-31991-1-git-send-email-mguzik@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
kernel/sched/debug.c