Re: [RFC PATCH v3 1/2] membarrier: Provide register expedited private command

From: Peter Zijlstra
Date: Mon Sep 25 2017 - 08:25:32 EST


On Mon, Sep 25, 2017 at 08:10:54PM +0800, Boqun Feng wrote:
> > static void membarrier_register_private_expedited(void)
> > {
> > struct task_struct *p = current;
> >
> > if (READ_ONCE(p->mm->membarrier_private_expedited))
> > return;
> > membarrier_arch_register_private_expedited(p);

Should we not then also do:

barrier();

> > WRITE_ONCE(p->mm->membarrier_private_expedited, 1);
> > }

to avoid the compiler lifting that store?