Re: [git pull] x86 fixes

Ingo Molnar
2008-03-27T21:24:35Z

* Ingo Molnar <mingo@elte.hu> wrote:

> The patch below (ontop of the tree) is a first cut at fixing all these
> problems - but i'd wait at least 24 hours with applying this to let it
> be tested through - it affects both 32-bit and 64-bit. The fix further
> cleans up this codepath and removes an #ifdef.

scratch that 24 hours - the patch is obviously correct as it only
removes the nonsensical bits that get duplicated below anyway.

Linus, please pull the latest x86 git tree from:

git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86.git for-linus

Thanks,

Ingo

------------------>
Ingo Molnar (1):
x86: prefetch fix #2

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 c0c82bc..ec08d83 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;