aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
authorMichael Neuling <mikey@neuling.org>2007-11-20 15:18:40 +1100
committerPaul Mackerras <paulus@samba.org>2007-11-20 16:10:28 +1100
commit2b46b5673ca67d23302c2afac045def988a3cade (patch)
tree02b291c7d8fe862e2ac76b22a4fc361e4620f0a3 /arch/powerpc
parent[POWERPC] spufs: Fix context destroy vs /spu readdir race (diff)
downloadlinux-dev-2b46b5673ca67d23302c2afac045def988a3cade.tar.xz
linux-dev-2b46b5673ca67d23302c2afac045def988a3cade.zip
[POWERPC] Fix possible division by zero in scaled time accounting
If we get no user time and no system time allocated since the last account_system_vtime, the system to user time ratio estimate can end up dividing by zero. This was causing a problem noticed by Balbir Singh. Signed-off-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/kernel/time.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
index c0d77723ba11..a925a8eae121 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c
@@ -241,8 +241,9 @@ void account_system_vtime(struct task_struct *tsk)
/* deltascaled includes both user and system time.
* Hence scale it based on the purr ratio to estimate
* the system time */
- deltascaled = deltascaled * get_paca()->system_time /
- (get_paca()->system_time + get_paca()->user_time);
+ if (get_paca()->user_time)
+ deltascaled = deltascaled * get_paca()->system_time /
+ (get_paca()->system_time + get_paca()->user_time);
delta += get_paca()->system_time;
get_paca()->system_time = 0;
}