Skip to contentSkip to conversation

bug: keep_bootcon and early printk together can lead to (invisible) kernel panic

DISCUSSION Patrik, Kluba 2 participants 2 messages Feb 21, 2013 MIPS

lore
Share & tools
lore
#0 lore raw

Hi!

I had a silent lockup on one of our embedded system under development. It was not easy to track it down, so here's what I discovered, in case somebody runs into similar trouble.
Using 'keep_bootcon' command line parameter, and enabling early printk can lead to a kernel panic. At least on MIPS, it does. The problem is that in arch/mips/kernel/early_printk.c everything is declared as __init and __initdata, so they are being freed, when the kernel frees .init.* sections. If 'keep_bootcon' is given, the early console does not get unregistered, and the entry in the console_drivers list can point (will, believe me) to garbage data. It's up to you to imagine the effects...

Regards,
Patrik

--
Patrik KLUBA
Software Developer at

DENSION Audio Systems Ltd.
H-1116 Budapest, Sztregova u. 1

Phone: +36 1 463 0470
Fax:   +36 1 463 0479
Web:   www.dension.com
#1 lore raw
Quoted 11 lines · Kluba

I had a silent lockup on one of our embedded system under development. It was not easy to track it down, so here's what I discovered, in case somebody runs into similar trouble.
Using 'keep_bootcon' command line parameter, and enabling early printk can lead to a kernel panic. At least on MIPS, it does. The problem is that in arch/mips/kernel/early_printk.c everything is declared as __init and __initdata, so they are being freed, when the kernel frees .init.* sections. If 'keep_bootcon' is given, the early console does not get unregistered, and the entry in the console_drivers list can point (will, believe me) to garbage data. It's up to you to imagine the effects...

I also ran into this recently, this should fix it:

	http://marc.info/?l=linux-kernel&m=136062078931024&w=2

A.