Messages in this thread | | | From | bsegall@google ... | Subject | Re: [PATCH] ptrace: fix PTRACE_LISTEN race corrupting task->state | Date | Wed, 22 Feb 2017 09:56:40 -0800 |
| |
Oleg Nesterov <oleg@redhat.com> writes:
> On 02/21, bsegall@google.com wrote: >> >> In PT_SEIZED + LISTEN mode SIGSTOP/SIGCONT signals cause a wakeup >> against __TASK_TRACED. If this races with the ptrace_unfreeze_traced at >> the end of a PTRACE_LISTEN, this can wake the task /after/ the check >> against __TASK_TRACED, but before the reset of state to TASK_TRACED. > > Oh, thanks... > > note also that PTRACE_LISTEN itself can do ptrace_signal_wake_up(true), > >> This causes it to instead clobber TASK_WAKING, > > even if it is already TASK_RUNNING it is simply wrong to set TASK_TRACED > in both cases, right?
Yeah, that's also wrong and could possibly lead to different errors, but is likely to work out by accident when say ttwu checks on_rq and sees true.
> > Thanks. The patch looks good at first glance, but let me think a bit... > perhaps we should change PTRACE_LISTEN instead, not sure. > > Oleg.
| |