ANDROID: uid_sys_stats: fix access of task_uid(task)
authorGanesh Mahendran <opensource.ganesh@gmail.com>
Tue, 25 Apr 2017 10:07:43 +0000 (18:07 +0800)
committerAmit Pundir <amit.pundir@linaro.org>
Mon, 1 May 2017 10:00:00 +0000 (15:30 +0530)
struct task_struct *task should be proteced by tasklist_lock.

Change-Id: Iefcd13442a9b9d855a2bbcde9fd838a4132fee58
Signed-off-by: Ganesh Mahendran <opensource.ganesh@gmail.com>
drivers/misc/uid_sys_stats.c

index 618617f3e867a61396f4cefffa83390d184f3f1b..ad21276c8d9e74d1420e0e80f3ae0fa69716436e 100644 (file)
@@ -95,9 +95,11 @@ static int uid_cputime_show(struct seq_file *m, void *v)
 {
        struct uid_entry *uid_entry;
        struct task_struct *task, *temp;
+       struct user_namespace *user_ns = current_user_ns();
        cputime_t utime;
        cputime_t stime;
        unsigned long bkt;
+       uid_t uid;
 
        rt_mutex_lock(&uid_lock);
 
@@ -108,14 +110,13 @@ static int uid_cputime_show(struct seq_file *m, void *v)
 
        read_lock(&tasklist_lock);
        do_each_thread(temp, task) {
-               uid_entry = find_or_register_uid(from_kuid_munged(
-                       current_user_ns(), task_uid(task)));
+               uid = from_kuid_munged(user_ns, task_uid(task));
+               uid_entry = find_or_register_uid(uid);
                if (!uid_entry) {
                        read_unlock(&tasklist_lock);
                        rt_mutex_unlock(&uid_lock);
                        pr_err("%s: failed to find the uid_entry for uid %d\n",
-                               __func__, from_kuid_munged(current_user_ns(),
-                               task_uid(task)));
+                               __func__, uid);
                        return -ENOMEM;
                }
                task_cputime_adjusted(task, &utime, &stime);