On 10/24, Oleg Nesterov wrote:
>
> -static u32 perf_event_pid(struct perf_event *event, struct task_struct *p)
> +static u32 perf_event_xxx(struct perf_event *event, struct task_struct *p,
> +                             enum pid_type type)
>  {
> +     pid_t nr;
>       /*
>        * only top level events have the pid namespace they were created in
>        */
>       if (event->parent)
>               event = event->parent;
>
> -     return task_tgid_nr_ns(p, event->ns);
> +     nr = __task_pid_nr_ns(p, type, event->ns);
> +     if (!nr && !is_idle_task(p))
> +             nr = -1;
> +     return nr;

And just in case... In any case __task_pid_nr_ns() and other similar helpers
can also return zero if "p" runs in another namespace. Say, in the parent ns.

Say, perf_event_switch_output(). What do we want to report in this case, zero
or -1 ?

Oleg.

Reply via email to