powerpc: Fix oops when loading modules
This fixes a problem reported by Sean MacLennan where loading any
module would cause an oops. We weren't marking the pages containing
the module text as having hardware execute permission, due to a bug
introduced in commit 8d1cf34e
("powerpc/mm: Tweak PTE bit combination
definitions"), hence trying to execute the module text caused an
exception on processors that support hardware execute permission.
This adds _PAGE_HWEXEC to the definitions of PAGE_KERNEL_X and
PAGE_KERNEL_ROX to fix this problem.
Reported-by: Sean MacLennan <smaclennan@pikatech.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
Родитель
1a917bb549
Коммит
11b55da700
|
@ -151,9 +151,11 @@ extern unsigned long bad_call_to_PMD_PAGE_SIZE(void);
|
||||||
_PAGE_NO_CACHE)
|
_PAGE_NO_CACHE)
|
||||||
#define PAGE_KERNEL_NCG __pgprot(_PAGE_BASE_NC | _PAGE_KERNEL_RW | \
|
#define PAGE_KERNEL_NCG __pgprot(_PAGE_BASE_NC | _PAGE_KERNEL_RW | \
|
||||||
_PAGE_NO_CACHE | _PAGE_GUARDED)
|
_PAGE_NO_CACHE | _PAGE_GUARDED)
|
||||||
#define PAGE_KERNEL_X __pgprot(_PAGE_BASE | _PAGE_KERNEL_RW | _PAGE_EXEC)
|
#define PAGE_KERNEL_X __pgprot(_PAGE_BASE | _PAGE_KERNEL_RW | _PAGE_EXEC | \
|
||||||
|
_PAGE_HWEXEC)
|
||||||
#define PAGE_KERNEL_RO __pgprot(_PAGE_BASE | _PAGE_KERNEL_RO)
|
#define PAGE_KERNEL_RO __pgprot(_PAGE_BASE | _PAGE_KERNEL_RO)
|
||||||
#define PAGE_KERNEL_ROX __pgprot(_PAGE_BASE | _PAGE_KERNEL_RO | _PAGE_EXEC)
|
#define PAGE_KERNEL_ROX __pgprot(_PAGE_BASE | _PAGE_KERNEL_RO | _PAGE_EXEC | \
|
||||||
|
_PAGE_HWEXEC)
|
||||||
|
|
||||||
/* Protection used for kernel text. We want the debuggers to be able to
|
/* Protection used for kernel text. We want the debuggers to be able to
|
||||||
* set breakpoints anywhere, so don't write protect the kernel text
|
* set breakpoints anywhere, so don't write protect the kernel text
|
||||||
|
|
Загрузка…
Ссылка в новой задаче