On Wed, 10 Apr 2019 23:37:18 +0800 Feng Tang <feng.t...@intel.com> wrote:
> Currently on panic, kernel will lower the loglevel and print out > new printk msg only with console_flush_on_panic(). > > Add an option for users to configure the "panic_print" to see > all dmesg in buffer, some of which they may have never seen due > to the loglevel setting, which will help debugging too. > > Thanks to Petr Mladek as somes codes come directly from the sample > code in his review comments. CONFIG_PRINTK=n: kernel/printk/printk.c: In function console_unlock: kernel/printk/printk.c:2419:11: warning: __builtin_memcpy writing 27 bytes into a region of size 0 overflows the destination [-Wstringop-overflow=] len += sprintf(text + len, ^~~~~~~~~~~~~~~~~~~ "Replaying the entire log:\n"); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ because LOG_LINE_MAX=0 and PREFIX_MAX=0. Which is interesting. The pre-existing len = sprintf(text, "** %llu printk messages dropped **\n", log_first_seq - console_seq); in console_unlock() has the same issue, but the compiler doesn't seem to want to warn. (Also, using sprintf() is a bit lame for the new message - could use strlcpy()). I'll drop the patch for now - we don't want that warning to come out. console_unlock() needs some fixing for the CONFIG_PRINTK=n case.