diff options
author | Nitin Gupta <nitin.m.gupta@oracle.com> | 2017-11-03 20:26:06 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-11-15 06:37:43 +0100 |
commit | 70f3c8b7c2e7ebcdde8354da004872e7c9184e97 (patch) | |
tree | 2de0060e985b99cf738be31ef36893f65c75185d /arch | |
parent | sparc64: Convert timers to user timer_setup() (diff) | |
download | linux-70f3c8b7c2e7ebcdde8354da004872e7c9184e97.tar.xz linux-70f3c8b7c2e7ebcdde8354da004872e7c9184e97.zip |
sparc64: Fix page table walk for PUD hugepages
For a PUD hugepage entry, we need to propagate bits [32:22]
from virtual address to resolve at 4M granularity. However,
the current code was incorrectly propagating bits [29:19].
This bug can cause incorrect data to be returned for pages
backed with 16G hugepages.
Signed-off-by: Nitin Gupta <nitin.m.gupta@oracle.com>
Reported-by: Al Viro <viro@ZenIV.linux.org.uk>
Cc: Al Viro <viro@ZenIV.linux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/sparc/include/asm/tsb.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/sparc/include/asm/tsb.h b/arch/sparc/include/asm/tsb.h index acf55063aa3d..ca0de1646f1e 100644 --- a/arch/sparc/include/asm/tsb.h +++ b/arch/sparc/include/asm/tsb.h @@ -216,7 +216,7 @@ extern struct tsb_phys_patch_entry __tsb_phys_patch, __tsb_phys_patch_end; sllx REG2, 32, REG2; \ andcc REG1, REG2, %g0; \ be,pt %xcc, 700f; \ - sethi %hi(0x1ffc0000), REG2; \ + sethi %hi(0xffe00000), REG2; \ sllx REG2, 1, REG2; \ brgez,pn REG1, FAIL_LABEL; \ andn REG1, REG2, REG1; \ |