Re: [PATCH 27/38] Rearrange buffer formatting in printk()

From: Petr Mladek
Date: Tue Sep 30 2014 - 15:37:34 EST


On Tue 30-09-14 18:16:20, Petr Mladek wrote:
> On Mon 29-09-14 13:58:56, Hannes Reinecke wrote:
> > Move buffer formatting to the start of the function as it
> > doesn't require to be done under any locks.
> > No functional change, required by the next patch.
> >
> > Cc: Steven Rostedt <rostedt@xxxxxxxxxxx>
> > Cc: LKML <linux-kernel@xxxxxxxxxxxxxxx>
>
> printk stuff is maintained by Andrew in mm tree, so adding him into CC.
>
> > Signed-off-by: Hannes Reinecke <hare@xxxxxxx>
>
> Reviewed-by: Petr Mladek <pmladek@xxxxxxx>

I have just realized that textbuf[LOG_LINE_MAX] is a static variable.
It means that it must be used under the lock and this patch is wrong.
I want to take back the Reviewed-by and instead do

Nacked->by: Petr Mladek <pmladek@xxxxxxx>

also it means that it does not take the extra space on the stack
and you probably does not need the two patches at all.

Best Regards,
Petr

> I do not see any obvious problem. Just note that
> [sched_delayed] has already been removed in -mm tree. You might
> want to base this patch on top of the commit 460d73c35ffa17979422290
> ("printk: git rid of [sched_delayed] message for printk_deferred")
> from linux-next.
>
> Best Regards,
> Petr
>
> > ---
> > kernel/printk/printk.c | 21 ++++++++++-----------
> > 1 file changed, 10 insertions(+), 11 deletions(-)
> >
> > diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
> > index 1ce7706..d13675e 100644
> > --- a/kernel/printk/printk.c
> > +++ b/kernel/printk/printk.c
> > @@ -1633,8 +1633,18 @@ asmlinkage int vprintk_emit(int facility, int level,
> > if (level == SCHED_MESSAGE_LOGLEVEL) {
> > level = -1;
> > in_sched = true;
> > +
> > + /*
> > + * The printf needs to come first; we need the syslog
> > + * prefix which might be passed-in as a parameter.
> > + */
> > + text_len = scnprintf(text, sizeof(textbuf),
> > + KERN_WARNING "[sched_delayed] ");
> > }
> >
> > + text_len += vscnprintf(text + text_len,
> > + sizeof(textbuf) - text_len, fmt, args);
> > +
> > boot_delay_msec(level);
> > printk_delay();
> >
> > @@ -1676,17 +1686,6 @@ asmlinkage int vprintk_emit(int facility, int level,
> > strlen(recursion_msg));
> > }
> >
> > - /*
> > - * The printf needs to come first; we need the syslog
> > - * prefix which might be passed-in as a parameter.
> > - */
> > - if (in_sched)
> > - text_len = scnprintf(text, sizeof(textbuf),
> > - KERN_WARNING "[sched_delayed] ");
> > -
> > - text_len += vscnprintf(text + text_len,
> > - sizeof(textbuf) - text_len, fmt, args);
> > -
> > /* mark and strip a trailing newline */
> > if (text_len && text[text_len-1] == '\n') {
> > text_len--;
> > --
> > 1.8.5.2
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> > the body of a message to majordomo@xxxxxxxxxxxxxxx
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> > Please read the FAQ at http://www.tux.org/lkml/
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/