Re: [PATCH] epoll: ensure ep_poll() doesn't miss wakeup events

2020-05-04 Thread Roman Penyaev
On 2020-05-04 06:59, Jason Baron wrote: On 5/4/20 12:29 AM, Jason Baron wrote: On 5/3/20 6:24 AM, Roman Penyaev wrote: On 2020-05-02 00:09, Jason Baron wrote: On 5/1/20 5:02 PM, Roman Penyaev wrote: Hi Jason, That is indeed a nice catch. Seems we need smp_rmb() pair between list_empty_car

Re: [PATCH] epoll: ensure ep_poll() doesn't miss wakeup events

2020-05-03 Thread Jason Baron
On 5/4/20 12:29 AM, Jason Baron wrote: > > > On 5/3/20 6:24 AM, Roman Penyaev wrote: >> On 2020-05-02 00:09, Jason Baron wrote: >>> On 5/1/20 5:02 PM, Roman Penyaev wrote: Hi Jason, That is indeed a nice catch. Seems we need smp_rmb() pair between list_empty_careful(&rp->rd

Re: [PATCH] epoll: ensure ep_poll() doesn't miss wakeup events

2020-05-03 Thread Jason Baron
On 5/3/20 6:24 AM, Roman Penyaev wrote: > On 2020-05-02 00:09, Jason Baron wrote: >> On 5/1/20 5:02 PM, Roman Penyaev wrote: >>> Hi Jason, >>> >>> That is indeed a nice catch. >>> Seems we need smp_rmb() pair between list_empty_careful(&rp->rdllist) and >>> READ_ONCE(ep->ovflist) for ep_events_a

RE: [PATCH] epoll: ensure ep_poll() doesn't miss wakeup events

2020-05-03 Thread David Laight
From: Jason Baron > Sent: 01 May 2020 20:16 > > Now that the ep_events_available() check is done in a lockless way, and > we no longer perform wakeups from ep_scan_ready_list(), we need to ensure > that either ep->rdllist has items or the overflow list is active. Prior to: > commit 339ddb53d373 ("f

Re: [PATCH] epoll: ensure ep_poll() doesn't miss wakeup events

2020-05-03 Thread Roman Penyaev
On 2020-05-02 00:09, Jason Baron wrote: On 5/1/20 5:02 PM, Roman Penyaev wrote: Hi Jason, That is indeed a nice catch. Seems we need smp_rmb() pair between list_empty_careful(&rp->rdllist) and READ_ONCE(ep->ovflist) for ep_events_available(), do we? Hi Roman, Good point, even if we order

Re: [PATCH] epoll: ensure ep_poll() doesn't miss wakeup events

2020-05-01 Thread Jason Baron
On 5/1/20 5:02 PM, Roman Penyaev wrote: > Hi Jason, > > That is indeed a nice catch. > Seems we need smp_rmb() pair between list_empty_careful(&rp->rdllist) and > READ_ONCE(ep->ovflist) for ep_events_available(), do we? > Hi Roman, Good point, even if we order those reads its still racy, sin

Re: [PATCH] epoll: ensure ep_poll() doesn't miss wakeup events

2020-05-01 Thread Roman Penyaev
Hi Jason, That is indeed a nice catch. Seems we need smp_rmb() pair between list_empty_careful(&rp->rdllist) and READ_ONCE(ep->ovflist) for ep_events_available(), do we? Other than that: Reviewed-by: Roman Penyaev -- Roman On 2020-05-01 21:15, Jason Baron wrote: Now that the ep_events_ava

[PATCH] epoll: ensure ep_poll() doesn't miss wakeup events

2020-05-01 Thread Jason Baron
Now that the ep_events_available() check is done in a lockless way, and we no longer perform wakeups from ep_scan_ready_list(), we need to ensure that either ep->rdllist has items or the overflow list is active. Prior to: commit 339ddb53d373 ("fs/epoll: remove unnecessary wakeups of nested epoll"),