Dan, On Wed, 30 May 2018, Mark Rutland wrote: > > diff --git a/arch/x86/include/asm/barrier.h b/arch/x86/include/asm/barrier.h > > index 042b5e892ed1..41f7435c84a7 100644 > > --- a/arch/x86/include/asm/barrier.h > > +++ b/arch/x86/include/asm/barrier.h > > @@ -38,10 +38,11 @@ static inline unsigned long array_index_mask_nospec(unsigned long index, > > { > > unsigned long mask; > > > > - asm ("cmp %1,%2; sbb %0,%0;" > > + asm volatile ("cmp %1,%2; sbb %0,%0;" > > :"=r" (mask) > > :"g"(size),"r" (index) > > :"cc"); > > + barrier(); > > return mask; > > } > > What does the barrier() prevent? > > I don't think that inhibits the insertion of branches, and AFAIK the volatile > is sufficient to prevent elision of identical array_idx_nospec() calls. > > I don't have an objection to it, regardless. > > So long as the example is updated in the commit message, feel free to add: Any update on this? Thanks, tglx