[POWERPC] Fix possible division by zero in scaled time accounting
authorMichael Neuling <mikey@neuling.org>
Tue, 20 Nov 2007 04:18:40 +0000 (15:18 +1100)
committerPaul Mackerras <paulus@samba.org>
Tue, 20 Nov 2007 05:10:28 +0000 (16:10 +1100)
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>
arch/powerpc/kernel/time.c

index c0d77723ba1141124733e05ab64b93343957a7fe..a925a8eae121e1946c8d39959775b4b07de1c561 100644 (file)
@@ -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;
        }