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

Commit 7717da91 authored by Ruchi Kandoi's avatar Ruchi Kandoi
Browse files

uid_cputime: Avoids double accounting of process stime, utime and cpu_power in


task exit.

This avoids the race where a particular process is terminating and we
read the show_uid_stats. At this time since the task_struct still exists
and we will account for the terminating process as one of the active
task, where as the stats would have been added in the task exit
callback.

Bug: 22064385
Change-Id: Id2ae04b33fcd230eda9683a41b6019d4dd8f5d85
Signed-off-by: default avatarJin Qian <jinqian@google.com>
Signed-off-by: default avatarRuchi Kandoi <kandoiruchi@google.com>
parent 7394e76e
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -100,6 +100,11 @@ static int uid_stat_show(struct seq_file *m, void *v)
				task_uid(task)));
			return -ENOMEM;
		}
		/* if this task is exiting, we have already accounted for the
		 * time and power.
		 */
		if (task->cpu_power == ULLONG_MAX)
			continue;
		task_cputime_adjusted(task, &utime, &stime);
		uid_entry->active_utime += utime;
		uid_entry->active_stime += stime;
@@ -211,6 +216,7 @@ static int process_notifier(struct notifier_block *self,
	uid_entry->utime += utime;
	uid_entry->stime += stime;
	uid_entry->power += task->cpu_power;
	task->cpu_power = ULLONG_MAX;

exit:
	mutex_unlock(&uid_lock);