summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-emulation/xen-pvgrub/files/xen-pvgrub-4.7.0-fix-boot-p2m.patch')
-rw-r--r--app-emulation/xen-pvgrub/files/xen-pvgrub-4.7.0-fix-boot-p2m.patch36
1 files changed, 36 insertions, 0 deletions
diff --git a/app-emulation/xen-pvgrub/files/xen-pvgrub-4.7.0-fix-boot-p2m.patch b/app-emulation/xen-pvgrub/files/xen-pvgrub-4.7.0-fix-boot-p2m.patch
new file mode 100644
index 000000000000..e9c80400bdc1
--- /dev/null
+++ b/app-emulation/xen-pvgrub/files/xen-pvgrub-4.7.0-fix-boot-p2m.patch
@@ -0,0 +1,36 @@
+From 9714f6b87e19b32d3a6663a20df6610265c4bfe5 Mon Sep 17 00:00:00 2001
+From: Juergen Gross <jgross@suse.com>
+Date: Wed, 28 Sep 2016 06:02:44 +0200
+Subject: [PATCH] pvgrub: fix crash when booting kernel with p2m list outside
+ kernel mapping
+
+When trying to boot a kernel with the p2m list not mapped by the
+initial kernel mapping it can happen that pvgrub is failing as it is
+keeping some page tables mapped.
+
+Unmap the additional page tables created for the special p2m mapping
+will avoid this failure.
+
+Reported-by: Sven Koehler <sven.koehler@gmail.com>
+Signed-off-by: Juergen Gross <jgross@suse.com>
+Acked-by: Wei Liu <wei.liu2@citrix.com>
+---
+ stubdom/grub/kexec.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/stubdom/grub/kexec.c b/stubdom/grub/kexec.c
+index 8fd9ff9..71c2f3f 100644
+--- a/stubdom/grub/kexec.c
++++ b/stubdom/grub/kexec.c
+@@ -347,6 +347,8 @@ void kexec(void *kernel, long kernel_size, void *module, long module_size, char
+ /* Unmap libxc's projection of the boot page table */
+ seg = xc_dom_seg_to_ptr(dom, &dom->pgtables_seg);
+ munmap(seg, dom->pgtables_seg.vend - dom->pgtables_seg.vstart);
++ seg = xc_dom_seg_to_ptr(dom, &dom->p2m_seg);
++ munmap(seg, dom->p2m_seg.vend - dom->p2m_seg.vstart);
+
+ /* Unmap day0 pages to avoid having a r/w mapping of the future page table */
+ for (pfn = 0; pfn < allocated; pfn++)
+--
+2.10.0
+