]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
sparc64: Fix memory corruption when THP is enabled
authorNitin Gupta <nitin.m.gupta@oracle.com>
Mon, 3 Apr 2017 22:32:28 +0000 (15:32 -0700)
committerChuck Anderson <chuck.anderson@oracle.com>
Mon, 24 Apr 2017 04:43:24 +0000 (21:43 -0700)
The memory corruption was happening due to incorrect
TLB/TSB flushing of hugepages.

Orabug: 25704426

Reported-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Nitin Gupta <nitin.m.gupta@oracle.com>
Signed-off-by: Allen Pais <allen.pais@oracle.com>
arch/sparc/mm/tsb.c

index b5d829afbda606148145cee6888db6483a123bdb..87c39fdd00aeb95f92ab13eb5cd426de8187783c 100644 (file)
@@ -121,7 +121,7 @@ void flush_tsb_user(struct tlb_batch *tb)
 
        spin_lock_irqsave(&mm->context.lock, flags);
 
-       if (tb->hugepage_shift < HPAGE_SHIFT) {
+       if (tb->hugepage_shift < REAL_HPAGE_SHIFT) {
                base = (unsigned long) mm->context.tsb_block[MM_TSB_BASE].tsb;
                nentries = mm->context.tsb_block[MM_TSB_BASE].tsb_nentries;
                if (tlb_type == cheetah_plus || tlb_type == hypervisor)
@@ -154,7 +154,7 @@ void flush_tsb_user_page(struct mm_struct *mm, unsigned long vaddr,
 
        spin_lock_irqsave(&mm->context.lock, flags);
 
-       if (hugepage_shift < HPAGE_SHIFT) {
+       if (hugepage_shift < REAL_HPAGE_SHIFT) {
                base = (unsigned long) mm->context.tsb_block[MM_TSB_BASE].tsb;
                nentries = mm->context.tsb_block[MM_TSB_BASE].tsb_nentries;
                if (tlb_type == cheetah_plus || tlb_type == hypervisor)