Mailing List Archive

[linux-2.6.18-xen] xen/x86-64: kern_addr_valid() must not walk page tables mapping hypervisor space
# HG changeset patch
# User Keir Fraser <keir.fraser@citrix.com>
# Date 1271090074 -3600
# Node ID fbe371367af64674d8eefa59924890a7b783f769
# Parent 11175e60d39349f7daf5672481f25b9546f0918e
xen/x86-64: kern_addr_valid() must not walk page tables mapping hypervisor space

Signed-off-by: Jan Beulich <jbeulich@novell.com>
---
arch/x86_64/mm/init-xen.c | 13 +++++++++++++
1 files changed, 13 insertions(+)

diff -r 11175e60d393 -r fbe371367af6 arch/x86_64/mm/init-xen.c
--- a/arch/x86_64/mm/init-xen.c Tue Mar 30 18:28:34 2010 +0100
+++ b/arch/x86_64/mm/init-xen.c Mon Apr 12 17:34:34 2010 +0100
@@ -1149,6 +1149,19 @@ int kern_addr_valid(unsigned long addr)
if (above != 0 && above != -1UL)
return 0;

+#ifdef CONFIG_XEN
+ /*
+ * Don't walk page tables for hypervisor addresses, but allow
+ * the M2P table to be accessed through e.g. /proc/kcore.
+ */
+ if (addr >= (unsigned long)machine_to_phys_mapping &&
+ addr < (unsigned long)(machine_to_phys_mapping +
+ (1UL << machine_to_phys_order)))
+ return 1;
+ if (addr >= HYPERVISOR_VIRT_START && addr < HYPERVISOR_VIRT_END)
+ return 0;
+#endif
+
pgd = pgd_offset_k(addr);
if (pgd_none(*pgd))
return 0;

_______________________________________________
Xen-changelog mailing list
Xen-changelog@lists.xensource.com
http://lists.xensource.com/xen-changelog