diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-03-27 21:29:09 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-03-27 22:00:16 +0100 |
commit | 3085354de635179d70c240e6d942bcbd1d93056c (patch) | |
tree | 60d67b5d16ea9fc73a0e0d091162c337bc87e5e7 /arch/x86/mm/fault.c | |
parent | fb8c7fb25d7d754a992481e9f763ec0b5889c4d9 (diff) | |
download | talos-op-linux-3085354de635179d70c240e6d942bcbd1d93056c.tar.gz talos-op-linux-3085354de635179d70c240e6d942bcbd1d93056c.zip |
x86: prefetch fix #2
Linus noticed a second bug and an uncleanliness:
- we'd return on any instruction fetch fault
- we'd use both the value of 16 and the PF_INSTR symbol which are
the same and make no sense
the cleanup nicely unifies this piece of logic.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/mm/fault.c')
-rw-r--r-- | arch/x86/mm/fault.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c index c0c82bc143c9..ec08d8389850 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c @@ -91,13 +91,10 @@ static int is_prefetch(struct pt_regs *regs, unsigned long addr, int prefetch = 0; unsigned char *max_instr; -#ifdef CONFIG_X86_32 - /* Catch an obscure case of prefetch inside an NX page: */ - if ((__supported_pte_mask & _PAGE_NX) && (error_code & 16)) - return 0; -#endif - - /* If it was a exec fault on NX page, ignore */ + /* + * If it was a exec (instruction fetch) fault on NX page, then + * do not ignore the fault: + */ if (error_code & PF_INSTR) return 0; |