Am Montag, den 11.05.2020, 09:50 +0200 schrieb Pierre Labastie via
lfs-dev:
> Sorry if this has already been reported. With gcc 10 and kernel 5.6.11,
> I get:
> Kernel panic - not syncing: stack-protector: Kernel stack is corrupted
> in: start_secondary+0x169/0x170
> 
> at early boot.
> this has been reported upstream [1], who made a complicated patch,
> mainly consisting of comments. It seems it occurs only when
> CONFIG_STACKPROTECTOR_STRONG=y. I do not know which kernel will have
> it. 5.6.12 doesn't.
> 
> Two possibilities: remove the STACK_PROTECTOR_STRONG config, or apply
> this sed:
> 
> sed -e '/cpu_startup/a asm("");' -i arch/x86/kernel/smpboot.c
> 
> which does not fix xen kernel, but does everything else the patch does.
> 
> Pierre
> 
> [1] end of a long thread on lkml: 
> https://lore.kernel.org/lkml/158798746828.28353.6010675315553653459.tip-bot2@tip-bot2/
> 
Sorry for not responding in time.

I just compiled linux-5.6.13 first without the modifications and i
failed to boot with exactly the same kernel-panic.

According to a patch which can be found on lkml, i modified the
sources by applying

====
diff -Naur linux-5.6.13.orig/arch/x86/kernel/smpboot.c linux-
5.6.13/arch/x86/kernel/smpboot.c
--- linux-5.6.13.orig/arch/x86/kernel/smpboot.c 2020-03-30
00:25:41.000000000 +0200
+++ linux-5.6.13/arch/x86/kernel/smpboot.c      2020-05-19
14:00:42.250125049 +0200
@@ -262,6 +262,7 @@
 
        wmb();
        cpu_startup_entry(CPUHP_AP_ONLINE_IDLE);
+       asm("");  // disable tail-call optimization
 }
 
 /**
diff -Naur linux-5.6.13.orig/arch/x86/xen/smp_pv.c linux-
5.6.13/arch/x86/xen/smp_pv.c
--- linux-5.6.13.orig/arch/x86/xen/smp_pv.c     2020-03-30
00:25:41.000000000 +0200
+++ linux-5.6.13/arch/x86/xen/smp_pv.c  2020-05-19 14:01:41.717566594
+0200
@@ -92,6 +92,7 @@
        cpu_bringup();
        boot_init_stack_canary();
        cpu_startup_entry(CPUHP_AP_ONLINE_IDLE);
+       asm("");  // disable tail-call optimization
 }
 
 void xen_smp_intr_free_pv(unsigned int cpu)
====

And with this, machine boots. Btw, i have
CONFIG_STACKPROTECTOR_STRONG=y

I'd vote for applying the patch (or a sed) rather than unsetting
CONFIG_STACKPROTECTOR_STRONG as at least the name of this option
sounds like it has to do with security. Switching off security i think
is the second best. But i also have to admit that i haven't read the
documentation about those options, yet.

--
Thomas

-- 
http://lists.linuxfromscratch.org/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to