diff options
author | Oleg Nesterov <oleg@redhat.com> | 2014-06-06 17:36:44 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-06 19:08:11 -0400 |
commit | 650226bd95817d727c9a388752d72ef292c4a668 (patch) | |
tree | 3ac61b738f2738a76e0326da7e58433fbd79d6d2 /kernel/signal.c | |
parent | 4e52365f279564cef0ddd41db5237f0471381093 (diff) |
ptrace: task_clear_jobctl_trapping()->wake_up_bit() needs mb()
__wake_up_bit() checks waitqueue_active() and thus the caller needs mb()
as wake_up_bit() documents, fix task_clear_jobctl_trapping().
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel/signal.c')
-rw-r--r-- | kernel/signal.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/signal.c b/kernel/signal.c index 6e600aaa2af4..9b5453ee5f5e 100644 --- a/kernel/signal.c +++ b/kernel/signal.c | |||
@@ -277,6 +277,7 @@ void task_clear_jobctl_trapping(struct task_struct *task) | |||
277 | { | 277 | { |
278 | if (unlikely(task->jobctl & JOBCTL_TRAPPING)) { | 278 | if (unlikely(task->jobctl & JOBCTL_TRAPPING)) { |
279 | task->jobctl &= ~JOBCTL_TRAPPING; | 279 | task->jobctl &= ~JOBCTL_TRAPPING; |
280 | smp_mb(); /* advised by wake_up_bit() */ | ||
280 | wake_up_bit(&task->jobctl, JOBCTL_TRAPPING_BIT); | 281 | wake_up_bit(&task->jobctl, JOBCTL_TRAPPING_BIT); |
281 | } | 282 | } |
282 | } | 283 | } |