|
|
@@ -221,7 +221,9 @@ static int mm_fault_error(struct pt_regs *regs, unsigned long addr,
|
|
|
static bool bad_kernel_fault(bool is_exec, unsigned long error_code,
|
|
|
unsigned long address)
|
|
|
{
|
|
|
- if (is_exec && (error_code & (DSISR_NOEXEC_OR_G | DSISR_KEYFAULT))) {
|
|
|
+ /* NX faults set DSISR_PROTFAULT on the 8xx, DSISR_NOEXEC_OR_G on others */
|
|
|
+ if (is_exec && (error_code & (DSISR_NOEXEC_OR_G | DSISR_KEYFAULT |
|
|
|
+ DSISR_PROTFAULT))) {
|
|
|
printk_ratelimited(KERN_CRIT "kernel tried to execute"
|
|
|
" exec-protected page (%lx) -"
|
|
|
"exploit attempt? (uid: %d)\n",
|