xen: mask_rw_pte mark RO all pagetable pages up to pgt_buf_top
authorStefano Stabellini <stefano.stabellini@eu.citrix.com>
Tue, 12 Apr 2011 11:19:49 +0000 (12:19 +0100)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Mon, 2 May 2011 20:33:52 +0000 (16:33 -0400)
mask_rw_pte is currently checking if a pfn is a pagetable page if it
falls in the range pgt_buf_start - pgt_buf_end but that is incorrect
because pgt_buf_end is a moving target: pgt_buf_top is the real
boundary.

Acked-by: "H. Peter Anvin" <hpa@zytor.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
arch/x86/xen/mmu.c

index 1bca25f60ff2064b97fdaf009cbf26bbce1be38f..55c965b38c27c76769ecde61a9b5041c6969003b 100644 (file)
@@ -1616,7 +1616,7 @@ static __init pte_t mask_rw_pte(pte_t *ptep, pte_t pte)
         * it is RO.
         */
        if (((!is_early_ioremap_ptep(ptep) &&
-                       pfn >= pgt_buf_start && pfn < pgt_buf_end)) ||
+                       pfn >= pgt_buf_start && pfn < pgt_buf_top)) ||
                        (is_early_ioremap_ptep(ptep) && pfn != (pgt_buf_end - 1)))
                pte = pte_wrprotect(pte);