diff options
author | David S. Miller <davem@davemloft.net> | 2013-02-20 12:38:40 -0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-02-27 09:21:14 -0800 |
commit | 53aa75aa360992e07141bbfa2c6062110e678605 (patch) | |
tree | d8142e2f9892b2c7cec5a8ec24e4b3729cd50e8a /kernel/rtmutex-debug.c | |
parent | d13cdf91b4ccc961b496a72d80b549dc158f970e (diff) |
sparc64: Fix huge PMD to PTE translation for sun4u in TLB miss handler.
[ Upstream commit 76968ad2eac6456270353de168b21f04f4b3d1d3 ]
When we set the sun4u version of the PTE execute bit, it's:
or REG, _PAGE_EXEC_4U, REG
_PAGE_EXEC_4U is 0x1000, unfortunately the immedate field of the
'or' instruction is a signed 13-bit value. So the above actually
assembles into:
or REG, -4096, REG
completely corrupting the final PTE value.
Set it with a:
sethi %hi(_PAGE_EXEC_4U), TMP
or REG, TMP, REG
sequence instead.
This fixes "git gc" crashes on sun4u machines.
Reported-by: Meelis Roos <mroos@linux.ee>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'kernel/rtmutex-debug.c')
0 files changed, 0 insertions, 0 deletions