mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 23:32:14 +00:00
ARM: 9131/1: mm: Fix PXN process with LPAE feature
When user code execution with privilege mode, it will lead to
infinite loop in the page fault handler if ARM_LPAE enabled,
The issue could be reproduced with
"echo EXEC_USERSPACE > /sys/kernel/debug/provoke-crash/DIRECT"
As Permission fault shows in ARM spec,
IFSR format when using the Short-descriptor translation table format
Permission fault: 01101 First level 01111 Second level
IFSR format when using the Long-descriptor translation table format
Permission fault: 0011LL LL bits indicate levelb.
Add is_permission_fault() function to check permission fault and die
if permission fault occurred under instruction fault in do_page_fault().
Fixes: 1d4d37159d
("ARM: 8235/1: Support for the PXN CPU feature on ARMv7")
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
This commit is contained in:
parent
2e707106fa
commit
abc25bbcb5
2 changed files with 23 additions and 1 deletions
|
@ -14,6 +14,8 @@
|
|||
|
||||
#ifdef CONFIG_ARM_LPAE
|
||||
#define FSR_FS_AEA 17
|
||||
#define FS_PERM_NOLL 0xC
|
||||
#define FS_PERM_NOLL_MASK 0x3C
|
||||
|
||||
static inline int fsr_fs(unsigned int fsr)
|
||||
{
|
||||
|
@ -21,6 +23,8 @@ static inline int fsr_fs(unsigned int fsr)
|
|||
}
|
||||
#else
|
||||
#define FSR_FS_AEA 22
|
||||
#define FS_L1_PERM 0xD
|
||||
#define FS_L2_PERM 0xF
|
||||
|
||||
static inline int fsr_fs(unsigned int fsr)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue