Re: [PATCH v1 1/2] Add polling support to pidfd

From: Oleg Nesterov
Date: Mon Apr 29 2019 - 10:26:06 EST


On 04/29, Joel Fernandes wrote:
>
> On Mon, Apr 29, 2019 at 10:02:45AM -0400, Joel Fernandes wrote:
> > On Sun, Apr 28, 2019 at 06:24:06PM +0200, Oleg Nesterov wrote:
> [snip]
> > > > > +{
> > > > > + struct pid *pid;
> > > > > +
> > > > > + lockdep_assert_held(&tasklist_lock);
> > > > > +
> > > > > + pid = get_task_pid(task, PIDTYPE_PID);
> > > > > + wake_up_all(&pid->wait_pidfd);
> > > > > + put_pid(pid);
> > >
> > > Why get/put?
> >
> > Yes, pid_task() should do it. Will update it. Thanks!
>
> I spoke too soon. We need the task's pid of type PIDTYPE_PID. How else can we
> get it? This does an atomic_inc on the pid->count, so we need to put_pid()
> after we are done with it. Did I miss something?

Just use task_pid(task);

Oleg.