Skip to contentSkip to conversation

Revert "nmi-safe-kernel/x86_64-page-fault-nmi-safe"

PATCH New Tom Zanussi 1 participant 1 message Feb 14, 2011

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Revert "nmi-safe-kernel/x86_64-page-fault-nmi-safe"

From: Tom Zanussi <[email protected]>

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.

---
 arch/x86/mm/fault.c |    4 +---
 1 files changed, 1 insertions(+), 3 deletions(-)
arch/x86/mm/fault.c +1 -3
index 5494537..0030984 100644
@@ -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;
Signature · 1 line
1.7.0.4