diff options
Diffstat (limited to 'fs/proc/array.c')
| -rw-r--r-- | fs/proc/array.c | 23 | 
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)  	return task_state_array[task_state_index(tsk)];  } -static inline int get_task_umask(struct task_struct *tsk) -{ -	struct fs_struct *fs; -	int umask = -ENOENT; - -	task_lock(tsk); -	fs = tsk->fs; -	if (fs) -		umask = fs->umask; -	task_unlock(tsk); -	return umask; -} -  static inline void task_state(struct seq_file *m, struct pid_namespace *ns,  				struct pid *pid, struct task_struct *p)  {  	struct user_namespace *user_ns = seq_user_ns(m);  	struct group_info *group_info; -	int g, umask; +	int g, umask = -1;  	struct task_struct *tracer;  	const struct cred *cred;  	pid_t ppid, tpid = 0, tgid, ngid; @@ -177,16 +164,16 @@ static inline void task_state(struct seq_file *m, struct pid_namespace *ns,  	ngid = task_numa_group_id(p);  	cred = get_task_cred(p); -	umask = get_task_umask(p); -	if (umask >= 0) -		seq_printf(m, "Umask:\t%#04o\n", umask); -  	task_lock(p); +	if (p->fs) +		umask = p->fs->umask;  	if (p->files)  		max_fds = files_fdtable(p->files)->max_fds;  	task_unlock(p);  	rcu_read_unlock(); +	if (umask >= 0) +		seq_printf(m, "Umask:\t%#04o\n", umask);  	seq_printf(m, "State:\t%s", get_task_state(p));  	seq_put_decimal_ull(m, "\nTgid:\t", tgid); |