On Tue, 28 Jun 2022 17:42:22 -0500 "Eric W. Biederman" <ebied...@xmission.com> wrote:
> diff --git a/kernel/ptrace.c b/kernel/ptrace.c > index 156a99283b11..cb85bcf84640 100644 > --- a/kernel/ptrace.c > +++ b/kernel/ptrace.c > @@ -202,6 +202,7 @@ static bool ptrace_freeze_traced(struct task_struct *task) > spin_lock_irq(&task->sighand->siglock); > if (task_is_traced(task) && !looks_like_a_spurious_pid(task) && > !__fatal_signal_pending(task)) { > + smp_rmb(); > task->jobctl |= JOBCTL_PTRACE_FROZEN; > ret = true; > } > diff --git a/kernel/signal.c b/kernel/signal.c > index edb1dc9b00dc..bcd576e9de66 100644 > --- a/kernel/signal.c > +++ b/kernel/signal.c > @@ -2233,6 +2233,7 @@ static int ptrace_stop(int exit_code, int why, unsigned > long message, > return exit_code; > > set_special_state(TASK_TRACED); > + smp_wmb(); > current->jobctl |= JOBCTL_TRACED; > Are not these both done under the sighand->siglock spinlock? That is, the two paths should already be synchronized, and the memory barriers will not help anything inside the locks. The locking should (and must) handle all that. -- Steve _______________________________________________ linux-um mailing list linux-um@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-um