Re: [PATCH printk v1] printk: fix illegal pbufs access for !CONFIG_PRINTK

From: Sergey Senozhatsky
Date: Wed Sep 20 2023 - 22:19:07 EST


On (23/09/20 17:58), John Ogness wrote:
> When CONFIG_PRINTK is not set, PRINTK_MESSAGE_MAX is 0. This
> leads to a zero-sized array @outbuf in @printk_shared_pbufs. In
> console_flush_all() a pointer to the first element of the array
> is assigned with:
>
> char *outbuf = &printk_shared_pbufs.outbuf[0];
>
> For !CONFIG_PRINTK this leads to a compiler warning:
>
> warning: array subscript 0 is outside array bounds of
> 'char[0]' [-Warray-bounds]
>
> This is not really dangerous because printk_get_next_message()
> always returns false for !CONFIG_PRINTK, which leads to @outbuf
> never being used. However, it makes no sense to even compile
> these functions for !CONFIG_PRINTK.

I wonder if anyone really use !PRINTK kernels. Can we get rid
of CONFIG_PRINTK?

> Extend the existing '#ifdef CONFIG_PRINTK' block to contain
> the formatting and emitting functions since these have no
> purpose in !CONFIG_PRINTK. This also allows removing several
> more !CONFIG_PRINTK dummies as well as moving
> @suppress_panic_printk into a CONFIG_PRINTK block.
>
> Reported-by: kernel test robot <lkp@xxxxxxxxx>
> Closes: https://lore.kernel.org/oe-kbuild-all/202309201724.M9BMAQIh-lkp@xxxxxxxxx/
> Signed-off-by: John Ogness <john.ogness@xxxxxxxxxxxxx>

FWIW,
Reviewed-by: Sergey Senozhatsky <senozhatsky@xxxxxxxxxxxx>