Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 57d73092 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull cputime fix from Ingo Molnar:
 "This fixes a longer-standing cputime accounting bug that Stanislaw
  Gruszka finally managed to track down"

* 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  sched/cputime: Do not scale when utime == 0
parents 050ba07c 5a8e01f8
Loading
Loading
Loading
Loading
+11 −8
Original line number Diff line number Diff line
@@ -551,10 +551,7 @@ static void cputime_adjust(struct task_cputime *curr,
			   struct cputime *prev,
			   cputime_t *ut, cputime_t *st)
{
	cputime_t rtime, stime, utime, total;

	stime = curr->stime;
	total = stime + curr->utime;
	cputime_t rtime, stime, utime;

	/*
	 * Tick based cputime accounting depend on random scheduling
@@ -576,13 +573,19 @@ static void cputime_adjust(struct task_cputime *curr,
	if (prev->stime + prev->utime >= rtime)
		goto out;

	if (total) {
	stime = curr->stime;
	utime = curr->utime;

	if (utime == 0) {
		stime = rtime;
	} else if (stime == 0) {
		utime = rtime;
	} else {
		cputime_t total = stime + utime;

		stime = scale_stime((__force u64)stime,
				    (__force u64)rtime, (__force u64)total);
		utime = rtime - stime;
	} else {
		stime = rtime;
		utime = 0;
	}

	/*