All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] sched: fix user time incorrectly accounted as system time on 32 bit
@ 2010-09-14 14:35 Stanislaw Gruszka
  2010-09-14 14:37 ` Peter Zijlstra
  2010-09-15 10:01 ` [tip:sched/urgent] sched: Fix user time incorrectly accounted as system time on 32-bit tip-bot for Stanislaw Gruszka
  0 siblings, 2 replies; 3+ messages in thread
From: Stanislaw Gruszka @ 2010-09-14 14:35 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Hidetoshi Seto, Peter Zijlstra, stable,
	Michael Chapman, Ciriaco Garcia de Celis

We have 32 bit variable overflow possibility when multiply in
task_times() and thread_group_times() functions. If overflow happens
calculated scaled utime value become wrongly small and scaled stime
wrongly big.

Reported here:
https://bugzilla.redhat.com/show_bug.cgi?id=633037
https://bugzilla.kernel.org/show_bug.cgi?id=16559

Reported-by: Michael Chapman <redhat-bugzilla@very.puzzling.org>
Reported-by: Ciriaco Garcia de Celis <sysman@etherpilot.com>
Cc: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: <stable@kernel.org>  # 2.6.32.19+ (partially) and 2.6.33+
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
---
v1 -> v2
Fix mail recipients.

 kernel/sched.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/kernel/sched.c b/kernel/sched.c
index 09b574e..eee9470 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -3507,9 +3507,9 @@ void task_times(struct task_struct *p, cputime_t *ut, cputime_t *st)
 	rtime = nsecs_to_cputime(p->se.sum_exec_runtime);
 
 	if (total) {
-		u64 temp;
+		u64 temp = rtime;
 
-		temp = (u64)(rtime * utime);
+		temp *= utime;
 		do_div(temp, total);
 		utime = (cputime_t)temp;
 	} else
@@ -3540,9 +3540,9 @@ void thread_group_times(struct task_struct *p, cputime_t *ut, cputime_t *st)
 	rtime = nsecs_to_cputime(cputime.sum_exec_runtime);
 
 	if (total) {
-		u64 temp;
+		u64 temp = rtime;
 
-		temp = (u64)(rtime * cputime.utime);
+		temp *= cputime.utime;
 		do_div(temp, total);
 		utime = (cputime_t)temp;
 	} else
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2010-09-15 10:02 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-09-14 14:35 [PATCH v2] sched: fix user time incorrectly accounted as system time on 32 bit Stanislaw Gruszka
2010-09-14 14:37 ` Peter Zijlstra
2010-09-15 10:01 ` [tip:sched/urgent] sched: Fix user time incorrectly accounted as system time on 32-bit tip-bot for Stanislaw Gruszka

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.