x86: prefetch fix #2
authorIngo Molnar <mingo@elte.hu>
Thu, 27 Mar 2008 20:29:09 +0000 (21:29 +0100)
committerIngo Molnar <mingo@elte.hu>
Thu, 27 Mar 2008 21:00:16 +0000 (22:00 +0100)
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>
arch/x86/mm/fault.c

index c0c82bc143c98966e9e5e88634560096b5ae4923..ec08d83898505171ca31b146d4bb0360690ae884 100644 (file)
@@ -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;