uid_cputime: Iterates over all the threads instead of processes.
authorRuchi Kandoi <kandoiruchi@google.com>
Fri, 31 Jul 2015 17:17:54 +0000 (10:17 -0700)
committerHuang, Tao <huangtao@rock-chips.com>
Tue, 27 Oct 2015 08:28:27 +0000 (16:28 +0800)
Bug: 22833116
Change-Id: I775a18f61bd2f4df2bec23d01bd49421d0969f87
Signed-off-by: Ruchi Kandoi <kandoiruchi@google.com>
(cherry picked from commit eb9cf7d0d416edc93edfe6e784189f02c82701a1)

drivers/misc/uid_cputime.c

index 75843985c0e866b64c70af2826911e66f2a49a5b..43298a43ecc38e8784735ed03b263052af08b024 100644 (file)
@@ -75,7 +75,7 @@ static struct uid_entry *find_or_register_uid(uid_t uid)
 static int uid_stat_show(struct seq_file *m, void *v)
 {
        struct uid_entry *uid_entry;
-       struct task_struct *task;
+       struct task_struct *task, *temp;
        cputime_t utime;
        cputime_t stime;
        unsigned long bkt;
@@ -89,7 +89,7 @@ static int uid_stat_show(struct seq_file *m, void *v)
        }
 
        read_lock(&tasklist_lock);
-       for_each_process(task) {
+       do_each_thread(temp, task) {
                uid_entry = find_or_register_uid(from_kuid_munged(
                        current_user_ns(), task_uid(task)));
                if (!uid_entry) {
@@ -109,7 +109,7 @@ static int uid_stat_show(struct seq_file *m, void *v)
                uid_entry->active_utime += utime;
                uid_entry->active_stime += stime;
                uid_entry->active_power += task->cpu_power;
-       }
+       } while_each_thread(temp, task);
        read_unlock(&tasklist_lock);
 
        hash_for_each(hash_table, bkt, uid_entry, hash) {