All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Ogness <john.ogness@linutronix.de>
To: kernel test robot <lkp@intel.com>, Petr Mladek <pmladek@suse.com>
Cc: oe-kbuild-all@lists.linux.dev,
	Sergey Senozhatsky <senozhatsky@chromium.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH printk v3 6/6] printk: introduce console_prepend_dropped() for dropped messages
Date: Thu, 05 Jan 2023 15:01:28 +0106	[thread overview]
Message-ID: <877cy1cchb.fsf@jogness.linutronix.de> (raw)
In-Reply-To: <202301052114.vvN3wQoH-lkp@intel.com>

On 2023-01-05, kernel test robot <lkp@intel.com> wrote:
> smatch warnings:
> kernel/printk/printk.c:2735 console_prepend_dropped() warn: always true condition '(cmsg->outbuf_len + len >= outbuf_sz) => (0-u64max >= 0)'

Thank you kernel test robot, but actually this code will never be hit
when outbuf_sz is 0. Explanation below.

> vim +2735 kernel/printk/printk.c
>
>   2701	
>   2702	/*
>   2703	 * Prepend the message in @cmsg->cbufs->outbuf with a "dropped message". This
>   2704	 * is achieved by shifting the existing message over and inserting the dropped
>   2705	 * message.
>   2706	 *
>   2707	 * @cmsg is the console message to prepend.
>   2708	 *
>   2709	 * @dropped is the dropped count to report in the dropped message.
>   2710	 *
>   2711	 * If the message text in @cmsg->cbufs->outbuf does not have enough space for
>   2712	 * the dropped message, the message text will be sufficiently truncated.
>   2713	 *
>   2714	 * If @cmsg->cbufs->outbuf is modified, @cmsg->outbuf_len is updated.
>   2715	 */
>   2716	static void console_prepend_dropped(struct console_message *cmsg, unsigned long dropped)
>   2717	{
>   2718		struct console_buffers *cbufs = cmsg->cbufs;
>   2719		const size_t scratchbuf_sz = sizeof(cbufs->scratchbuf);
>   2720		const size_t outbuf_sz = sizeof(cbufs->outbuf);
>   2721		char *scratchbuf = &cbufs->scratchbuf[0];
>   2722		char *outbuf = &cbufs->outbuf[0];
>   2723		size_t len;
>   2724	
>   2725		len = snprintf(scratchbuf, scratchbuf_sz,
>   2726			       "** %lu printk messages dropped **\n", dropped);
>   2727	
>   2728		/*
>   2729		 * Make sure outbuf is sufficiently large before prepending. Space
>   2730		 * for a terminator is also counted in case truncation occurs.
>   2731		 */
>   2732		if (WARN_ON_ONCE(len + 1 >= outbuf_sz))
>   2733			return;

If outbuf_sz is 0, the above check will return. It is interesting that
smatch did not complain about this line instead. I suppose the
WARN_ON_ONCE confused it.

Note that if outbuf_sz is 0, then CONFIG_PRINTK is undefined. In that
case this function should not be called anyway. So the check and warning
are appropriate here.

>   2734	
>> 2735		if (cmsg->outbuf_len + len >= outbuf_sz) {

John Ogness

      reply	other threads:[~2023-01-05 14:03 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-21 20:26 [PATCH printk v3 0/6] printk: cleanup buffer handling John Ogness
2022-12-21 20:26 ` [PATCH printk v3 1/6] printk: move size limit macros into internal.h John Ogness
2023-01-02 14:06   ` Petr Mladek
2022-12-21 20:27 ` [PATCH printk v3 2/6] console: Use BIT() macros for @flags values John Ogness
2022-12-21 20:27 ` [PATCH printk v3 3/6] console: Document struct console John Ogness
2022-12-21 20:27 ` [PATCH printk v3 4/6] printk: introduce struct console_buffers John Ogness
2023-01-02 15:15   ` Petr Mladek
2023-01-03 10:04   ` John Ogness
2022-12-21 20:27 ` [PATCH printk v3 5/6] printk: introduce console_get_next_message() and console_message John Ogness
2022-12-22 15:41   ` John Ogness
2023-01-03 14:04     ` Petr Mladek
2023-01-03 14:57       ` John Ogness
2023-01-03 15:55         ` Petr Mladek
2023-01-04 10:26           ` John Ogness
2023-01-04 10:42             ` Petr Mladek
2023-01-02 15:52   ` Petr Mladek
2023-01-03 15:41     ` John Ogness
2023-01-03 10:02   ` John Ogness
2023-01-03 14:05     ` Petr Mladek
2022-12-21 20:27 ` [PATCH printk v3 6/6] printk: introduce console_prepend_dropped() for dropped messages John Ogness
2023-01-02 16:19   ` Petr Mladek
2023-01-03 10:20     ` John Ogness
2023-01-03 13:29       ` Petr Mladek
2023-01-03 13:44         ` John Ogness
2023-01-03 14:16           ` Petr Mladek
2023-01-03 15:00             ` John Ogness
2023-01-03 16:13               ` Petr Mladek
2023-01-04  9:06                 ` John Ogness
2023-01-04 10:33                   ` Petr Mladek
2023-01-05 13:14   ` kernel test robot
2023-01-05 13:55     ` John Ogness [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=877cy1cchb.fsf@jogness.linutronix.de \
    --to=john.ogness@linutronix.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=pmladek@suse.com \
    --cc=rostedt@goodmis.org \
    --cc=senozhatsky@chromium.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.