it seems that I missed something else...

On 07/17, Joel Fernandes (Google) wrote:
>
> @@ -1156,10 +1157,11 @@ static int wait_task_zombie(struct wait_opts *wo, 
> struct task_struct *p)
>               ptrace_unlink(p);
>  
>               /* If parent wants a zombie, don't release it now */
> -             state = EXIT_ZOMBIE;
> +             p->exit_state = EXIT_ZOMBIE;
>               if (do_notify_parent(p, p->exit_signal))
> -                     state = EXIT_DEAD;
> -             p->exit_state = state;
> +                     p->exit_state = EXIT_DEAD;
> +
> +             state = p->exit_state;
>               write_unlock_irq(&tasklist_lock);

why do you think we also need to change wait_task_zombie() ?

pidfd_poll() only needs the exit_state != 0 check, we know that it
is not zero at this point. Why do we need to change exit_state before
do_notify_parent() ?

Oleg.

Reply via email to