Browse Source

[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>
Michael Neuling 17 years ago
parent
commit
2b46b5673c
1 changed files with 3 additions and 2 deletions
  1. 3 2
      arch/powerpc/kernel/time.c

+ 3 - 2
arch/powerpc/kernel/time.c

@@ -241,8 +241,9 @@ void account_system_vtime(struct task_struct *tsk)
 		/* deltascaled includes both user and system time.
 		/* deltascaled includes both user and system time.
 		 * Hence scale it based on the purr ratio to estimate
 		 * Hence scale it based on the purr ratio to estimate
 		 * the system time */
 		 * 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;
 		delta += get_paca()->system_time;
 		get_paca()->system_time = 0;
 		get_paca()->system_time = 0;
 	}
 	}