Messages in this thread | | | Date | Mon, 30 Apr 2018 21:40:24 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH 2/2] sched: Introduce set_special_state() |
| |
On Mon, Apr 30, 2018 at 06:45:46PM +0200, Oleg Nesterov wrote: > On 04/30, Peter Zijlstra wrote: > > > > --- a/kernel/signal.c > > +++ b/kernel/signal.c > > @@ -1968,7 +1968,7 @@ static void ptrace_stop(int exit_code, i > > * atomic with respect to siglock and should be done after the arch > > * hook as siglock is released and regrabbed across it. > > */ > > - set_current_state(TASK_TRACED); > > + set_special_state(TASK_TRACED); > > Yes, but please note the comment above, we need a barrier after state = TASK_TRACED, > that is why ptrace_stop() does set_current_state(), not __set_current_state().
OK, so I got properly lost in that stuff.
The comment says it we need to set TASK_TRACED before clearing JOBCTL_TRAPPING because of do_wait(), but I cannot seem to locate code in do_wait() and below that cares about JOBCTL_TRAPPING.
Could you elucidate my tired brain?
| |