So I bisected a userspace corruption regression down to commit:

commit a8e654f01cb725d0bfd741ebca1bf4c9337969cc                                 
                                                   
Author: Nitin Gupta <nitin.m.gu...@oracle.com>                                  
                                                   
Date:   Wed Jan 31 16:18:09 2018 -0800                                          
                                                   
                                                                                
                                                   
    sparc64: update pmdp_invalidate() to return old pmd value                   
                                                   

The transformation is basically from a set_pte_at() call into
an atomic cmpxchg64() loop to set the pmd.

The problem is that set_pmd_at() does more than just assign
the pmd entry.

It also does some accounting and also queues up a batch TLB
flush entry.

So the side effect of this change is that the TLB is never
flushed for these changed PMDs, and thus the userland memory
corruption I was seeing.

Reply via email to