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
prev parent 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.