[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] linux/x86-64: force _PAGE_NX on the 1:1 mapping (matching native)



# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Date 1180015951 -3600
# Node ID 1fde9ebb8019c0f7079ffbc5ba800abcc9b1f882
# Parent  965bf43c9f1139135c2956cf90f916c335fd8e77
linux/x86-64: force _PAGE_NX on the 1:1 mapping (matching native)
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
---
 linux-2.6-xen-sparse/arch/x86_64/mm/init-xen.c |   17 +++++++----------
 1 files changed, 7 insertions(+), 10 deletions(-)

diff -r 965bf43c9f11 -r 1fde9ebb8019 
linux-2.6-xen-sparse/arch/x86_64/mm/init-xen.c
--- a/linux-2.6-xen-sparse/arch/x86_64/mm/init-xen.c    Thu May 24 14:07:40 
2007 +0100
+++ b/linux-2.6-xen-sparse/arch/x86_64/mm/init-xen.c    Thu May 24 15:12:31 
2007 +0100
@@ -479,18 +479,15 @@ phys_pmd_init(pmd_t *pmd, unsigned long 
                pte = alloc_static_page(&pte_phys);
                pte_save = pte;
                for (k = 0; k < PTRS_PER_PTE; pte++, k++, address += PTE_SIZE) {
+                       unsigned long pteval = address | _PAGE_NX | 
_KERNPG_TABLE;
+
                        if ((address >= end) ||
                            ((address >> PAGE_SHIFT) >=
-                            xen_start_info->nr_pages)) { 
-                               __set_pte(pte, __pte(0)); 
-                               continue;
-                       }
-                       if (make_readonly(address)) {
-                               __set_pte(pte, 
-                                         __pte(address | (_KERNPG_TABLE & 
~_PAGE_RW)));
-                               continue;
-                       }
-                       __set_pte(pte, __pte(address | _KERNPG_TABLE));
+                            xen_start_info->nr_pages))
+                               pteval = 0;
+                       else if (make_readonly(address))
+                               pteval &= ~_PAGE_RW;
+                       __set_pte(pte, __pte(pteval & __supported_pte_mask));
                }
                pte = pte_save;
                early_make_page_readonly(pte, XENFEAT_writable_page_tables);

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.