grub-devel
[Top][All Lists]
Advanced

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

xen: Fix handling of GRUB chainloading.


From: Vladimir 'phcoder' Serbinenko
Subject: xen: Fix handling of GRUB chainloading.
Date: Mon, 06 Feb 2017 23:50:53 +0000

In case of GRUB we put remapper after domain pages and not at 0x0.
In this case we use max_addr to put remapper. Unfortunately we increment
max_addr as well in this case resulting in virt mapping mapping page
at old max_addr and trying to boot using new max_addr.

Daniel, Andrei, Alexander, do you agree that it should go into 2.02?

Closes 46014.
---
 grub-core/loader/i386/xen.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/grub-core/loader/i386/xen.c b/grub-core/loader/i386/xen.c
index 51d1ddd..3073f64 100644
--- a/grub-core/loader/i386/xen.c
+++ b/grub-core/loader/i386/xen.c
@@ -419,8 +419,6 @@ grub_xen_pt_alloc (void)
       try_virt_end = ALIGN_UP (xen_state.xen_inf.virt_base +
        page2offset (nr_need_pages) +
        ADDITIONAL_SIZE + STACK_SIZE, ALIGN_SIZE);
-      if (!xen_state.xen_inf.virt_base)
- try_virt_end += PAGE_SIZE;
 
       err = get_pgtable_size (xen_state.xen_inf.virt_base, try_virt_end,
       nr_info_pages);
@@ -433,7 +431,7 @@ grub_xen_pt_alloc (void)
       if (xen_state.xen_inf.virt_base)
  err = get_pgtable_size (0, PAGE_SIZE, nr_need_pages);
       else
- err = get_pgtable_size (try_virt_end - PAGE_SIZE, try_virt_end,
+ err = get_pgtable_size (try_virt_end, try_virt_end + PAGE_SIZE,
  nr_need_pages);
       if (err)
  return err;
-- 
2.9.3


reply via email to

[Prev in Thread] Current Thread [Next in Thread]