aboutsummaryrefslogtreecommitdiffstats
path: root/fs/proc/array.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/proc/array.c')
-rw-r--r--fs/proc/array.c23
1 files changed, 5 insertions, 18 deletions
diff --git a/fs/proc/array.c b/fs/proc/array.c
index 598803576e4c..851ec0915e4c 100644
--- a/fs/proc/array.c
+++ b/fs/proc/array.c
@@ -141,25 +141,12 @@ static inline const char *get_task_state(struct task_struct *tsk)
141 return task_state_array[task_state_index(tsk)]; 141 return task_state_array[task_state_index(tsk)];
142} 142}
143 143
144static inline int get_task_umask(struct task_struct *tsk)
145{
146 struct fs_struct *fs;
147 int umask = -ENOENT;
148
149 task_lock(tsk);
150 fs = tsk->fs;
151 if (fs)
152 umask = fs->umask;
153 task_unlock(tsk);
154 return umask;
155}
156
157static inline void task_state(struct seq_file *m, struct pid_namespace *ns, 144static inline void task_state(struct seq_file *m, struct pid_namespace *ns,
158 struct pid *pid, struct task_struct *p) 145 struct pid *pid, struct task_struct *p)
159{ 146{
160 struct user_namespace *user_ns = seq_user_ns(m); 147 struct user_namespace *user_ns = seq_user_ns(m);
161 struct group_info *group_info; 148 struct group_info *group_info;
162 int g, umask; 149 int g, umask = -1;
163 struct task_struct *tracer; 150 struct task_struct *tracer;
164 const struct cred *cred; 151 const struct cred *cred;
165 pid_t ppid, tpid = 0, tgid, ngid; 152 pid_t ppid, tpid = 0, tgid, ngid;
@@ -177,16 +164,16 @@ static inline void task_state(struct seq_file *m, struct pid_namespace *ns,
177 ngid = task_numa_group_id(p); 164 ngid = task_numa_group_id(p);
178 cred = get_task_cred(p); 165 cred = get_task_cred(p);
179 166
180 umask = get_task_umask(p);
181 if (umask >= 0)
182 seq_printf(m, "Umask:\t%#04o\n", umask);
183
184 task_lock(p); 167 task_lock(p);
168 if (p->fs)
169 umask = p->fs->umask;
185 if (p->files) 170 if (p->files)
186 max_fds = files_fdtable(p->files)->max_fds; 171 max_fds = files_fdtable(p->files)->max_fds;
187 task_unlock(p); 172 task_unlock(p);
188 rcu_read_unlock(); 173 rcu_read_unlock();
189 174
175 if (umask >= 0)
176 seq_printf(m, "Umask:\t%#04o\n", umask);
190 seq_printf(m, "State:\t%s", get_task_state(p)); 177 seq_printf(m, "State:\t%s", get_task_state(p));
191 178
192 seq_put_decimal_ull(m, "\nTgid:\t", tgid); 179 seq_put_decimal_ull(m, "\nTgid:\t", tgid);