This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / fs / proc / array.c
index 6bdd15b..1901982 100644 (file)
@@ -149,6 +149,7 @@ static inline const char * get_task_state(struct task_struct *tsk)
 
 static inline char * task_state(struct task_struct *p, char *buffer)
 {
+       struct group_info *group_info;
        int g;
 
        read_lock(&tasklist_lock);
@@ -174,12 +175,14 @@ static inline char * task_state(struct task_struct *p, char *buffer)
                "FDSize:\t%d\n"
                "Groups:\t",
                p->files ? p->files->max_fds : 0);
+
+       group_info = p->group_info;
+       get_group_info(group_info);
        task_unlock(p);
 
-       get_group_info(p->group_info);
-       for (g = 0; g < min(p->group_info->ngroups,NGROUPS_SMALL); g++)
-               buffer += sprintf(buffer, "%d ", GROUP_AT(p->group_info,g));
-       put_group_info(p->group_info);
+       for (g = 0; g < min(group_info->ngroups,NGROUPS_SMALL); g++)
+               buffer += sprintf(buffer, "%d ", GROUP_AT(group_info,g));
+       put_group_info(group_info);
 
        buffer += sprintf(buffer, "\n");
        return buffer;
@@ -321,7 +324,10 @@ int proc_pid_stat(struct task_struct *task, char * buffer)
                up_read(&mm->mmap_sem);
        }
 
-       wchan = get_wchan(task);
+       wchan = 0;
+       if (current->uid == task->uid || current->euid == task->uid ||
+                                                       capable(CAP_SYS_NICE))
+               wchan = get_wchan(task);
 
        sigemptyset(&sigign);
        sigemptyset(&sigcatch);