[PATCH mm] stop c_p_a corrupting the pds

From: Hugh Dickins
Date: Tue Feb 05 2008 - 17:28:51 EST


When change_page_attr splits a large page on x86_32 (without PAE), it is
currently corrupting every process's page directory: fix that by removing
the thinko which passes down a physical instead of a virtual address -
this version of the patch being the hotfix for 2.6.24-mm1.

Signed-off-by: Hugh Dickins <hugh@xxxxxxxxxxx>

--- 2.6.24-mm1/arch/x86/mm/pageattr.c 2008-02-04 12:25:09.000000000 +0000
+++ linux/arch/x86/mm/pageattr.c 2008-02-05 20:52:43.000000000 +0000
@@ -218,8 +218,7 @@ static int split_large_page(pte_t *kpte,
goto out_unlock;
}

- address = __pa(address);
- addr = address & LARGE_PAGE_MASK;
+ addr = __pa(address) & LARGE_PAGE_MASK;
pbase = (pte_t *)page_address(base);
#ifdef CONFIG_X86_32
paravirt_alloc_pt(&init_mm, page_to_pfn(base));
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/