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