Re: [PATCH -tip v2] sched/cputime: do not scale when utime == 0

From: Ingo Molnar
Date: Wed Sep 04 2013 - 10:31:57 EST



* Stanislaw Gruszka <sgruszka@xxxxxxxxxx> wrote:

> scale_stime() silently assumes that stime < rtime, otherwise when
> stime == rtime and both values are big enough (operations on them do
> not fit in 32 bits), the resulting scaling stime can be bigger than
> rtime. In consequence utime = rtime - stime results in negative value.
>
> User space visible symptoms of the bug are overflowed TIME values on
> ps/top, for example:
>
> ps aux | grep rcu
> root 8 0.0 0.0 0 0 ? S 12:42 0:00 [rcuc/0]
> root 9 0.0 0.0 0 0 ? S 12:42 0:00 [rcub/0]
> root 10 62422329 0.0 0 0 ? R 12:42 21114581:37 [rcu_preempt]
> root 11 0.1 0.0 0 0 ? S 12:42 0:02 [rcuop/0]
> root 12 62422329 0.0 0 0 ? S 12:42 21114581:35 [rcuop/1]
> root 10 62422329 0.0 0 0 ? R 12:42 21114581:37 [rcu_preempt]
>
> or overflowed utime values read directly from /proc/$PID/stat
>
> Reference:
> https://lkml.org/lkml/2013/8/20/259
>
> Reported-and-tested-by: Sergey Senozhatsky <sergey.senozhatsky@xxxxxxxxx>
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Stanislaw Gruszka <sgruszka@xxxxxxxxxx>
> ---
> v1 -> v2 : describe user visible symptoms of the bug
>
> kernel/sched/cputime.c | 19 +++++++++++--------
> 1 files changed, 11 insertions(+), 8 deletions(-)

Applied, thanks!

Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/