diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c index fdc667422df9913f2f5d861a3e80fad14eab7f4d..c0c82bc143c98966e9e5e88634560096b5ae4923 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c @@ -92,7 +92,8 @@ static int is_prefetch(struct pt_regs *regs, unsigned long addr, unsigned char *max_instr; #ifdef CONFIG_X86_32 - if (!(__supported_pte_mask & _PAGE_NX)) + /* Catch an obscure case of prefetch inside an NX page: */ + if ((__supported_pte_mask & _PAGE_NX) && (error_code & 16)) return 0; #endif