ia64/xen-unstable

changeset 6651:60bf463f79a8

Fix vmalloc fault path in arch/xen/i386 to correctly deal
with _PAGE_PRESENT being missing from init_mm's pmd
entry (*pmd_k).

Signed-off-by: Jun Nakajima <jun.nakajima@intel.com>
Signed-off-by: Keir Fraser <keir@xensource.com>
author kaf24@firebug.cl.cam.ac.uk
date Tue Sep 06 09:44:58 2005 +0000 (2005-09-06)
parents aeaa3c83f6e5
children ef1cd7729676
files linux-2.6-xen-sparse/arch/xen/i386/mm/fault.c
line diff
     1.1 --- a/linux-2.6-xen-sparse/arch/xen/i386/mm/fault.c	Mon Sep 05 20:05:58 2005 +0000
     1.2 +++ b/linux-2.6-xen-sparse/arch/xen/i386/mm/fault.c	Tue Sep 06 09:44:58 2005 +0000
     1.3 @@ -588,7 +588,15 @@ vmalloc_fault:
     1.4  		pmd_k = pmd_offset(pud_k, address);
     1.5  		if (!pmd_present(*pmd_k))
     1.6  			goto no_context;
     1.7 +#ifndef CONFIG_XEN
     1.8  		set_pmd(pmd, *pmd_k);
     1.9 +#else
    1.10 +		/*
    1.11 +		 * When running on Xen we must launder *pmd_k through
    1.12 +		 * pmd_val() to ensure that _PAGE_PRESENT is correctly set.
    1.13 +		 */
    1.14 +		set_pmd(pmd, __pmd(pmd_val(*pmd_k)));
    1.15 +#endif
    1.16  
    1.17  		pte_k = pte_offset_kernel(pmd_k, address);
    1.18  		if (!pte_present(*pte_k))