Re: [PATCH] printk/console: Check consistent sequence number when handling race in console_unlock()

From: Petr Mladek
Date: Wed Jun 30 2021 - 04:57:50 EST


On Tue 2021-06-29 22:59:57, John Ogness wrote:
> On 2021-06-30, kernel test robot <lkp@xxxxxxxxx> wrote:
> >>> kernel/printk/printk.c:2548:6: warning: variable 'next_seq' set but not used [-Wunused-but-set-variable]
>
> I suppose the correct fix for this warning would be to change the NOP
> macros. Currently they are:
>
> #define prb_read_valid(rb, seq, r) false
> #define prb_first_valid_seq(rb) 0
>
> They should probably be something like (untested):
>
> #define prb_read_valid(rb, seq, r) \
> ({ \
> (void)(rb); \
> (void)(seq); \
> (void)(r); \
> false; \
> })

This did not work:

kernel/printk/printk.c: In function ‘console_unlock’:
kernel/printk/printk.c:2600:23: error: ‘prb’ undeclared (first use in this function)
if (!prb_read_valid(prb, console_seq, &r))
^
kernel/printk/printk.c:2230:16: note: in definition of macro ‘prb_read_valid’
(void)(rb); \
^~
kernel/printk/printk.c:2600:23: note: each undeclared identifier is reported only once for each function it appears in
if (!prb_read_valid(prb, console_seq, &r))
^
kernel/printk/printk.c:2230:16: note: in definition of macro ‘prb_read_valid’
(void)(rb); \
^~


Instead, it might be solved by declaring next_seq as:

u64 __maybe_unused next_seq;

Any better idea is welcome. Well, it is not worth any big complexity.

Best Regards,
Petr