[poky] [PATCH] Revert "nmi-safe-kernel/x86_64-page-fault-nmi-safe"

Tom Zanussi tom.zanussi at intel.com
Mon Feb 14 07:46:52 PST 2011


From: Tom Zanussi <tom.zanussi at intel.com>

This reverts commit 722d3ee9d6a5149cd6a22f19a44db301966fb711.

It might be nmi-safe, but it hangs the box in non-nmi context -
debugging shows it faulting forever at the same address.

Revert it since it's causing problems in non-tracing contexts.  Until
it gets fixed, I guess the thing to do is avoid tracing nmis.

Signed-off-by: Tom Zanussi <tom.zanussi at intel.com>
---
 arch/x86/mm/fault.c |    4 +---
 1 files changed, 1 insertions(+), 3 deletions(-)

diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
index 5494537..0030984 100644
--- a/arch/x86/mm/fault.c
+++ b/arch/x86/mm/fault.c
@@ -361,7 +361,6 @@ void vmalloc_sync_all(void)
  */
 static noinline __kprobes int vmalloc_fault(unsigned long address)
 {
-	unsigned long pgd_paddr;
 	pgd_t *pgd, *pgd_ref;
 	pud_t *pud, *pud_ref;
 	pmd_t *pmd, *pmd_ref;
@@ -378,8 +377,7 @@ static noinline __kprobes int vmalloc_fault(unsigned long address)
 	 * happen within a race in page table update. In the later
 	 * case just flush:
 	 */
-	pgd_paddr = read_cr3();
-	pgd = __va(pgd_paddr) + pgd_index(address);
+	pgd = pgd_offset(current->active_mm, address);
 	pgd_ref = pgd_offset_k(address);
 	if (pgd_none(*pgd_ref))
 		return -1;
-- 
1.7.0.4




More information about the poky mailing list