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.

Reply via email to