Re: [PATCH] perf: Fix race between close() and fork()

From: Peter Zijlstra
Date: Fri Jun 28 2019 - 16:46:34 EST


On Fri, Jun 28, 2019 at 05:50:03PM +0100, Mark Rutland wrote:
> > + /*
> > + * Wake any perf_event_free_task() waiting for this event to be
> > + * freed.
> > + */
> > + smp_mb(); /* pairs with wait_var_event() */
> > + wake_up_var(var);
>
> Huh, so wake_up_var() doesn't imply a RELEASE?
>
> As an aside, doesn't that mean all callers of wake_up_var() have to do
> likewise to ensure it isn't re-ordered with whatever prior stuff they're
> trying to notify waiters about? Several do an smp_store_release() then a
> wake_up_var(), but IIUC the wake_up_var() could get pulled before that
> release...

Yah,...

https://lkml.kernel.org/r/20190624165012.GH3436@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

I needs to get back to that.