From: oleg@redhat.com (Oleg Nesterov)
Subject: [PATCH v1 1/2] Add polling support to pidfd
Date: Tue, 30 Apr 2019 14:07:59 +0200 [thread overview]
Message-ID: <20190430120759.GC23020@redhat.com> (raw)
Message-ID: <20190430120759._4kNQHQq4fZteFY2bD0u3FgouWF0TDt2_7l4Dey7--4@z> (raw)
In-Reply-To: <20190430115332.GB23020@redhat.com>
On 04/30, Oleg Nesterov wrote:
>
> > > pidfd_poll() can race with the exiting task, miss exit_code != 0, and return
> > > zero. However, do_poll() won't block after that and pidfd_poll() will be called
> > > again.
> >
> > Here also I didn't follow what you mean. If exit_code is read as 0 in
> > pidfd_poll(), then in do_poll() the count will be 0 and it will block in
> > poll_schedule_timeout(). Right?
>
> No. Please note the pwq->triggered check and please read __pollwake().
>
> But if you want to understand this you can forget about poll/select. It is
> a bit complicated, in particular because it has to do set_current_state()
> right before schedule() and thus it plays games with pwq->triggered. But in
> essence this doesn't differ too much from the plain wait_event-like code
> (although you can also look at wait_woken/woken_wake_function).
>
> If remove_wait_queue() could happem before wake_up_all() (like in your pseudo-
> code above), then pidfd_poll() or any other ->poll() method could miss _both_
> the condition and wakeup. But sys_poll() doesn't do this, so it is fine to miss
> the condition and rely on wake_up_all() which ensures we won't block and the
> next iteration must see condition == T.
Oh, just in case... If it is not clear, of course I am talking about the case
when wake_up_call() was already called when we check the condition. Otherwise
everything is simple.
Oleg.
next prev parent reply other threads:[~2019-04-30 12:07 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-25 19:00 [PATCH v1 1/2] Add polling support to pidfd joel
2019-04-25 19:00 ` Joel Fernandes (Google)
2019-04-25 19:00 ` [PATCH v1 2/2] Add selftests for pidfd polling joel
2019-04-25 19:00 ` Joel Fernandes (Google)
2019-04-25 20:00 ` tycho
2019-04-25 20:00 ` Tycho Andersen
2019-04-26 13:47 ` joel
2019-04-26 13:47 ` Joel Fernandes
2019-04-25 21:29 ` christian
2019-04-25 21:29 ` Christian Brauner
2019-04-25 22:07 ` dancol
2019-04-25 22:07 ` Daniel Colascione
2019-04-26 17:26 ` joel
2019-04-26 17:26 ` Joel Fernandes
2019-04-26 19:35 ` dancol
2019-04-26 19:35 ` Daniel Colascione
2019-04-26 20:31 ` joel
2019-04-26 20:31 ` Joel Fernandes
2019-04-26 13:42 ` joel
2019-04-26 13:42 ` Joel Fernandes
2019-04-25 22:24 ` [PATCH v1 1/2] Add polling support to pidfd christian
2019-04-25 22:24 ` Christian Brauner
2019-04-26 14:23 ` joel
2019-04-26 14:23 ` Joel Fernandes
2019-04-26 15:21 ` christian
2019-04-26 15:21 ` Christian Brauner
2019-04-26 15:31 ` christian
2019-04-26 15:31 ` Christian Brauner
2019-04-28 16:24 ` oleg
2019-04-28 16:24 ` Oleg Nesterov
2019-04-29 14:02 ` joel
2019-04-29 14:02 ` Joel Fernandes
2019-04-29 14:07 ` joel
2019-04-29 14:07 ` Joel Fernandes
2019-04-29 14:25 ` oleg
2019-04-29 14:25 ` Oleg Nesterov
2019-04-29 14:20 ` oleg
2019-04-29 14:20 ` Oleg Nesterov
2019-04-29 16:32 ` joel
2019-04-29 16:32 ` Joel Fernandes
2019-04-30 11:53 ` oleg
2019-04-30 11:53 ` Oleg Nesterov
2019-04-30 12:07 ` oleg [this message]
2019-04-30 12:07 ` Oleg Nesterov
2019-04-30 15:49 ` joel
2019-04-30 15:49 ` Joel Fernandes
2019-04-26 14:58 ` christian
2019-04-26 14:58 ` Christian Brauner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190430120759.GC23020@redhat.com \
--to=oleg@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).