mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
make_page_readonly() must flush unused kmaps when handling
a high-memory page. Otherwise stale writable mappings may persist. This fixes a corner case for alloc_ldt (which can vmalloc an LDT and hence use highmem pages). Signed-off-by: Keir Fraser <keir@xensource.com>
This commit is contained in:
1 parent
cde43db53a
commit
931a2bf97f
1 file changed
+3
-1
@@ -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));
|
||||
|
||||