WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] Zero out newly allocated xenheap pages for page tables,

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Zero out newly allocated xenheap pages for page tables,
From: BitKeeper Bot <riel@xxxxxxxxxxx>
Date: Thu, 09 Jun 2005 20:21:50 +0000
Delivery-date: Fri, 10 Jun 2005 18:03:22 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: Xen Development List <xen-devel@xxxxxxxxxxxxxxxxxxx>
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
ChangeSet 1.1668.1.7, 2005/06/09 14:21:50-06:00, djm@xxxxxxxxxxxxxxx

        Zero out newly allocated xenheap pages for page tables,
        also newly allocated domheap pages.
        Signed-off by: Dan Magenheimer <dan.magenheimer@xxxxxx>



 domain.c                     |    5 ++++-
 patch/linux-2.6.11/pgalloc.h |   11 +++++------
 process.c                    |    4 ----
 3 files changed, 9 insertions(+), 11 deletions(-)


diff -Nru a/xen/arch/ia64/domain.c b/xen/arch/ia64/domain.c
--- a/xen/arch/ia64/domain.c    2005-06-10 14:04:21 -04:00
+++ b/xen/arch/ia64/domain.c    2005-06-10 14:04:21 -04:00
@@ -453,7 +453,11 @@
                if (d == dom0) p = map_new_domain0_page(mpaddr);
                else
 #endif
+               {
                        p = alloc_domheap_page(d);
+                       // zero out pages for security reasons
+                       memset(__va(page_to_phys(p)),0,PAGE_SIZE);
+               }
                if (unlikely(!p)) {
 printf("map_new_domain_page: Can't alloc!!!! Aaaargh!\n");
                        return(p);
@@ -512,7 +516,6 @@
        }
        /* if lookup fails and mpaddr is "legal", "create" the page */
        if ((mpaddr >> PAGE_SHIFT) < d->max_pages) {
-               // FIXME: should zero out pages for security reasons
                if (map_new_domain_page(d,mpaddr)) goto tryagain;
        }
        printk("lookup_domain_mpa: bad mpa %p (> %p\n",
diff -Nru a/xen/arch/ia64/patch/linux-2.6.11/pgalloc.h 
b/xen/arch/ia64/patch/linux-2.6.11/pgalloc.h
--- a/xen/arch/ia64/patch/linux-2.6.11/pgalloc.h        2005-06-10 14:04:21 
-04:00
+++ b/xen/arch/ia64/patch/linux-2.6.11/pgalloc.h        2005-06-10 14:04:21 
-04:00
@@ -1,54 +1,58 @@
 --- ../../linux-2.6.11/include/asm-ia64/pgalloc.h      2005-03-02 
00:37:31.000000000 -0700
-+++ include/asm-ia64/pgalloc.h 2005-04-29 17:09:20.000000000 -0600
-@@ -61,7 +61,11 @@
++++ include/asm-ia64/pgalloc.h 2005-06-09 13:40:48.000000000 -0600
+@@ -61,7 +61,12 @@
        pgd_t *pgd = pgd_alloc_one_fast(mm);
  
        if (unlikely(pgd == NULL)) {
 +#ifdef XEN
 +              pgd = (pgd_t *)alloc_xenheap_page();
++              memset(pgd,0,PAGE_SIZE);
 +#else
                pgd = (pgd_t *)__get_free_page(GFP_KERNEL|__GFP_ZERO);
 +#endif
        }
        return pgd;
  }
-@@ -104,7 +108,11 @@
+@@ -104,7 +109,12 @@
  static inline pmd_t*
  pmd_alloc_one (struct mm_struct *mm, unsigned long addr)
  {
 +#ifdef XEN
 +      pmd_t *pmd = (pmd_t *)alloc_xenheap_page();
++      memset(pmd,0,PAGE_SIZE);
 +#else
        pmd_t *pmd = (pmd_t 
*)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO);
 +#endif
  
        return pmd;
  }
-@@ -136,7 +144,11 @@
+@@ -136,7 +146,12 @@
  static inline struct page *
  pte_alloc_one (struct mm_struct *mm, unsigned long addr)
  {
 +#ifdef XEN
 +      struct page *pte = alloc_xenheap_page();
++      memset(pte,0,PAGE_SIZE);
 +#else
        struct page *pte = alloc_pages(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO, 0);
 +#endif
  
        return pte;
  }
-@@ -144,7 +156,11 @@
+@@ -144,7 +159,12 @@
  static inline pte_t *
  pte_alloc_one_kernel (struct mm_struct *mm, unsigned long addr)
  {
 +#ifdef XEN
 +      pte_t *pte = (pte_t *)alloc_xenheap_page();
++      memset(pte,0,PAGE_SIZE);
 +#else
        pte_t *pte = (pte_t 
*)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO);
 +#endif
  
        return pte;
  }
-@@ -152,13 +168,21 @@
+@@ -152,13 +172,21 @@
  static inline void
  pte_free (struct page *pte)
  {
diff -Nru a/xen/arch/ia64/process.c b/xen/arch/ia64/process.c
--- a/xen/arch/ia64/process.c   2005-06-10 14:04:21 -04:00
+++ b/xen/arch/ia64/process.c   2005-06-10 14:04:21 -04:00
@@ -822,8 +822,6 @@
 #define INTR_TYPE_MAX  10
 UINT64 int_counts[INTR_TYPE_MAX];
 
-void dis_foo(void) { }
-
 void
 ia64_handle_reflection (unsigned long ifa, struct pt_regs *regs, unsigned long 
isr, unsigned long iim, unsigned long vector)
 {
@@ -858,8 +856,6 @@
                vector = IA64_DATA_ACCESS_RIGHTS_VECTOR; break;
            case 25:
                vector = IA64_DISABLED_FPREG_VECTOR;
-//printf("*** Attempting to handle disabled_fpreg\n");
-               dis_foo();
                break;
            case 26:
 printf("*** NaT fault... attempting to handle as privop\n");

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Zero out newly allocated xenheap pages for page tables,, BitKeeper Bot <=