Messages in this thread | | | Date | Mon, 24 Oct 2016 14:21:23 +0200 | From | Oleg Nesterov <> | Subject | Re: hit a KASan bug related to Perf during stress test |
| |
On 10/24, Peter Zijlstra wrote: > > On Mon, Oct 24, 2016 at 01:15:27PM +0200, Oleg Nesterov wrote: > > > > --- x/kernel/events/core.c > > +++ x/kernel/events/core.c > > @@ -1257,7 +1257,7 @@ static u32 perf_event_pid(struct perf_ev > > if (event->parent) > > event = event->parent; > > > > - return task_tgid_nr_ns(p, event->ns); > > + return pid_alive(p) ? task_tgid_nr_ns(p, event->ns) : 0; > > } > > > > static u32 perf_event_tid(struct perf_event *event, struct task_struct *p) > > Should we do the same for perf_event_tid() and report -1 as the pid/tid > in the !alive case? -1 should be an obvious invalid pid since we limit > the pid-space to less than 32 bits.
task_pid_nr_ns() is always safe, it calls __task_pid_nr_ns(). But yes, it can return zero if called after exit_notify() and/or release_task().
And while zero is not a valid pid too, I guess it can be confused with the idle thread's "pid" ?
Oleg.
| |