diff options
Diffstat (limited to 'fs/proc/array.c')
-rw-r--r-- | fs/proc/array.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/proc/array.c b/fs/proc/array.c index 13b5d0708175..aa8637b81028 100644 --- a/fs/proc/array.c +++ b/fs/proc/array.c | |||
@@ -270,8 +270,10 @@ static inline void task_sig(struct seq_file *m, struct task_struct *p) | |||
270 | blocked = p->blocked; | 270 | blocked = p->blocked; |
271 | collect_sigign_sigcatch(p, &ignored, &caught); | 271 | collect_sigign_sigcatch(p, &ignored, &caught); |
272 | num_threads = atomic_read(&p->signal->count); | 272 | num_threads = atomic_read(&p->signal->count); |
273 | rcu_read_lock(); /* FIXME: is this correct? */ | ||
273 | qsize = atomic_read(&__task_cred(p)->user->sigpending); | 274 | qsize = atomic_read(&__task_cred(p)->user->sigpending); |
274 | qlim = p->signal->rlim[RLIMIT_SIGPENDING].rlim_cur; | 275 | rcu_read_unlock(); |
276 | qlim = task_rlimit(p, RLIMIT_SIGPENDING); | ||
275 | unlock_task_sighand(p, &flags); | 277 | unlock_task_sighand(p, &flags); |
276 | } | 278 | } |
277 | 279 | ||
@@ -418,7 +420,7 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, | |||
418 | cutime = sig->cutime; | 420 | cutime = sig->cutime; |
419 | cstime = sig->cstime; | 421 | cstime = sig->cstime; |
420 | cgtime = sig->cgtime; | 422 | cgtime = sig->cgtime; |
421 | rsslim = sig->rlim[RLIMIT_RSS].rlim_cur; | 423 | rsslim = ACCESS_ONCE(sig->rlim[RLIMIT_RSS].rlim_cur); |
422 | 424 | ||
423 | /* add up live thread stats at the group level */ | 425 | /* add up live thread stats at the group level */ |
424 | if (whole) { | 426 | if (whole) { |