]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.18-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 15 Jul 2022 11:39:03 +0000 (13:39 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 15 Jul 2022 11:39:03 +0000 (13:39 +0200)
added patches:
x86-xen-use-clear_bss-for-xen-pv-guests.patch

queue-5.15/series [new file with mode: 0644]
queue-5.18/series [new file with mode: 0644]
queue-5.18/x86-xen-use-clear_bss-for-xen-pv-guests.patch [new file with mode: 0644]

diff --git a/queue-5.15/series b/queue-5.15/series
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/queue-5.18/series b/queue-5.18/series
new file mode 100644 (file)
index 0000000..948e50a
--- /dev/null
@@ -0,0 +1 @@
+x86-xen-use-clear_bss-for-xen-pv-guests.patch
diff --git a/queue-5.18/x86-xen-use-clear_bss-for-xen-pv-guests.patch b/queue-5.18/x86-xen-use-clear_bss-for-xen-pv-guests.patch
new file mode 100644 (file)
index 0000000..a639a5a
--- /dev/null
@@ -0,0 +1,102 @@
+From 96e8fc5818686d4a1591bb6907e7fdb64ef29884 Mon Sep 17 00:00:00 2001
+From: Juergen Gross <jgross@suse.com>
+Date: Thu, 30 Jun 2022 09:14:39 +0200
+Subject: x86/xen: Use clear_bss() for Xen PV guests
+
+From: Juergen Gross <jgross@suse.com>
+
+commit 96e8fc5818686d4a1591bb6907e7fdb64ef29884 upstream.
+
+Instead of clearing the bss area in assembly code, use the clear_bss()
+function.
+
+This requires to pass the start_info address as parameter to
+xen_start_kernel() in order to avoid the xen_start_info being zeroed
+again.
+
+Signed-off-by: Juergen Gross <jgross@suse.com>
+Signed-off-by: Borislav Petkov <bp@suse.de>
+Reviewed-by: Jan Beulich <jbeulich@suse.com>
+Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
+Link: https://lore.kernel.org/r/20220630071441.28576-2-jgross@suse.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/x86/include/asm/setup.h |    3 +++
+ arch/x86/kernel/head64.c     |    2 +-
+ arch/x86/xen/enlighten_pv.c  |    8 ++++++--
+ arch/x86/xen/xen-head.S      |   10 +---------
+ 4 files changed, 11 insertions(+), 12 deletions(-)
+
+--- a/arch/x86/include/asm/setup.h
++++ b/arch/x86/include/asm/setup.h
+@@ -132,6 +132,9 @@ void *extend_brk(size_t size, size_t ali
+       }
+ extern void probe_roms(void);
++
++void clear_bss(void);
++
+ #ifdef __i386__
+ asmlinkage void __init i386_start_kernel(void);
+--- a/arch/x86/kernel/head64.c
++++ b/arch/x86/kernel/head64.c
+@@ -421,7 +421,7 @@ void __init do_early_exception(struct pt
+ /* Don't add a printk in there. printk relies on the PDA which is not initialized 
+    yet. */
+-static void __init clear_bss(void)
++void __init clear_bss(void)
+ {
+       memset(__bss_start, 0,
+              (unsigned long) __bss_stop - (unsigned long) __bss_start);
+--- a/arch/x86/xen/enlighten_pv.c
++++ b/arch/x86/xen/enlighten_pv.c
+@@ -1183,15 +1183,19 @@ static void __init xen_domu_set_legacy_f
+ extern void early_xen_iret_patch(void);
+ /* First C function to be called on Xen boot */
+-asmlinkage __visible void __init xen_start_kernel(void)
++asmlinkage __visible void __init xen_start_kernel(struct start_info *si)
+ {
+       struct physdev_set_iopl set_iopl;
+       unsigned long initrd_start = 0;
+       int rc;
+-      if (!xen_start_info)
++      if (!si)
+               return;
++      clear_bss();
++
++      xen_start_info = si;
++
+       __text_gen_insn(&early_xen_iret_patch,
+                       JMP32_INSN_OPCODE, &early_xen_iret_patch, &xen_iret,
+                       JMP32_INSN_SIZE);
+--- a/arch/x86/xen/xen-head.S
++++ b/arch/x86/xen/xen-head.S
+@@ -48,15 +48,6 @@ SYM_CODE_START(startup_xen)
+       ANNOTATE_NOENDBR
+       cld
+-      /* Clear .bss */
+-      xor %eax,%eax
+-      mov $__bss_start, %rdi
+-      mov $__bss_stop, %rcx
+-      sub %rdi, %rcx
+-      shr $3, %rcx
+-      rep stosq
+-
+-      mov %rsi, xen_start_info
+       mov initial_stack(%rip), %rsp
+       /* Set up %gs.
+@@ -71,6 +62,7 @@ SYM_CODE_START(startup_xen)
+       cdq
+       wrmsr
++      mov     %rsi, %rdi
+       call xen_start_kernel
+ SYM_CODE_END(startup_xen)
+       __FINIT