diff options
-rw-r--r-- | fs/proc/array.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/fs/proc/array.c b/fs/proc/array.c index b5810c228c10..7c8d9aecb070 100644 --- a/fs/proc/array.c +++ b/fs/proc/array.c @@ -157,9 +157,9 @@ static inline void task_state(struct seq_file *m, struct pid_namespace *ns, struct user_namespace *user_ns = seq_user_ns(m); struct group_info *group_info; int g; - struct fdtable *fdt = NULL; const struct cred *cred; pid_t ppid, tpid; + unsigned int max_fds = 0; rcu_read_lock(); ppid = pid_alive(p) ? @@ -171,6 +171,12 @@ static inline void task_state(struct seq_file *m, struct pid_namespace *ns, tpid = task_pid_nr_ns(tracer, ns); } cred = get_task_cred(p); + + task_lock(p); + if (p->files) + max_fds = files_fdtable(p->files)->max_fds; + task_unlock(p); + seq_printf(m, "State:\t%s\n" "Tgid:\t%d\n" @@ -179,7 +185,8 @@ static inline void task_state(struct seq_file *m, struct pid_namespace *ns, "PPid:\t%d\n" "TracerPid:\t%d\n" "Uid:\t%d\t%d\t%d\t%d\n" - "Gid:\t%d\t%d\t%d\t%d\n", + "Gid:\t%d\t%d\t%d\t%d\n" + "FDSize:\t%d\nGroups:\t", get_task_state(p), task_tgid_nr_ns(p, ns), task_numa_group_id(p), @@ -192,16 +199,8 @@ static inline void task_state(struct seq_file *m, struct pid_namespace *ns, from_kgid_munged(user_ns, cred->gid), from_kgid_munged(user_ns, cred->egid), from_kgid_munged(user_ns, cred->sgid), - from_kgid_munged(user_ns, cred->fsgid)); - - task_lock(p); - if (p->files) - fdt = files_fdtable(p->files); - seq_printf(m, - "FDSize:\t%d\n" - "Groups:\t", - fdt ? fdt->max_fds : 0); - task_unlock(p); + from_kgid_munged(user_ns, cred->fsgid), + max_fds); rcu_read_unlock(); group_info = cred->group_info; |