Commit 70f3c8b7 authored by Nitin Gupta's avatar Nitin Gupta Committed by David S. Miller

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: default avatarNitin Gupta <nitin.m.gupta@oracle.com>
Reported-by: default avatarAl Viro <viro@ZenIV.linux.org.uk>
Cc: Al Viro <viro@ZenIV.linux.org.uk>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ff029687
...@@ -216,7 +216,7 @@ extern struct tsb_phys_patch_entry __tsb_phys_patch, __tsb_phys_patch_end; ...@@ -216,7 +216,7 @@ extern struct tsb_phys_patch_entry __tsb_phys_patch, __tsb_phys_patch_end;
sllx REG2, 32, REG2; \ sllx REG2, 32, REG2; \
andcc REG1, REG2, %g0; \ andcc REG1, REG2, %g0; \
be,pt %xcc, 700f; \ be,pt %xcc, 700f; \
sethi %hi(0x1ffc0000), REG2; \ sethi %hi(0xffe00000), REG2; \
sllx REG2, 1, REG2; \ sllx REG2, 1, REG2; \
brgez,pn REG1, FAIL_LABEL; \ brgez,pn REG1, FAIL_LABEL; \
andn REG1, REG2, REG1; \ andn REG1, REG2, REG1; \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment