On Mon, Jul 24, 2017 at 09:41:39PM -0700, Andy Lutomirski wrote:
> +             /*
> +              * Resume remote flushes and then read tlb_gen.  The
> +              * implied barrier in atomic64_read() synchronizes

There is no barrier in atomic64_read().

> +              * with inc_mm_tlb_gen() like this:
> +              *
> +              * switch_mm_irqs_off():        flush request:
> +              *  cpumask_set_cpu(...);        inc_mm_tlb_gen();
> +              *  MB                           MB
> +              *  atomic64_read(.tlb_gen);     flush_tlb_others(mm_cpumask());
> +              */
>               cpumask_set_cpu(cpu, mm_cpumask(next));
>               next_tlb_gen = atomic64_read(&next->context.tlb_gen);
>  

Reply via email to