From: Greg Kroah-Hartman Date: Fri, 15 Jul 2022 11:39:03 +0000 (+0200) Subject: 5.18-stable patches X-Git-Tag: v4.9.324~63 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3b1df79c4d4a07f323f1e4c3ac10f5b42eb74d30;p=thirdparty%2Fkernel%2Fstable-queue.git 5.18-stable patches added patches: x86-xen-use-clear_bss-for-xen-pv-guests.patch --- diff --git a/queue-5.15/series b/queue-5.15/series new file mode 100644 index 00000000000..e69de29bb2d diff --git a/queue-5.18/series b/queue-5.18/series new file mode 100644 index 00000000000..948e50a1664 --- /dev/null +++ b/queue-5.18/series @@ -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 index 00000000000..a639a5ac999 --- /dev/null +++ b/queue-5.18/x86-xen-use-clear_bss-for-xen-pv-guests.patch @@ -0,0 +1,102 @@ +From 96e8fc5818686d4a1591bb6907e7fdb64ef29884 Mon Sep 17 00:00:00 2001 +From: Juergen Gross +Date: Thu, 30 Jun 2022 09:14:39 +0200 +Subject: x86/xen: Use clear_bss() for Xen PV guests + +From: Juergen Gross + +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 +Signed-off-by: Borislav Petkov +Reviewed-by: Jan Beulich +Reviewed-by: Boris Ostrovsky +Link: https://lore.kernel.org/r/20220630071441.28576-2-jgross@suse.com +Signed-off-by: Greg Kroah-Hartman +--- + 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