static inline char * task_state(struct task_struct *p, char *buffer)
{
+ struct group_info *group_info;
int g;
read_lock(&tasklist_lock);
"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;
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);