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) { |
