diff --git a/linux-2.6-xen-sparse/arch/xen/i386/mm/pgtable.c b/linux-2.6-xen-sparse/arch/xen/i386/mm/pgtable.c index 9182e0708e..d5782f9631 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/mm/pgtable.c +++ b/linux-2.6-xen-sparse/arch/xen/i386/mm/pgtable.c @@ -409,7 +409,9 @@ void make_page_readonly(void *va) if ((unsigned long)va >= (unsigned long)high_memory) { unsigned long pfn = pte_pfn(*pte); #ifdef CONFIG_HIGHMEM - if (pfn < highstart_pfn) + if (pfn >= highstart_pfn) + kmap_flush_unused(); /* flush stale writable kmaps */ + else #endif make_lowmem_page_readonly( phys_to_virt(pfn << PAGE_SHIFT));