Re: [RESEND PATCH 3.18-rc3] kdb: Avoid printing KERN_ levels to consoles

From: Joe Perches
Date: Thu Nov 06 2014 - 12:44:11 EST


On Thu, 2014-11-06 at 17:22 +0000, Daniel Thompson wrote:
> On 06/11/14 16:13, Joe Perches wrote:
> > On Thu, 2014-11-06 at 15:27 +0000, Daniel Thompson wrote:
> >> Currently when kdb traps printk messages then the raw log level prefix
> >> (consisting of '\001' followed by a numeral) does not get stripped off
> >> before the message is issued to the various I/O handlers supported by
> >> kdb. This causes annoying visual noise as well as causing problems
> >> grepping for ^. It is also a change of behaviour compared to normal usage
> >> of printk() usage. For example <SysRq>-h ends up with different to that of
> >> kdb's "sr h".
> >>
> >> This patch addresses the problem by stripping log levels from messages
> >> before they are issued to the I/O handlers.
> >
> > Perhaps instead of stripping the logging level,
> > maybe a KERN_SOH_ASCII 'char' sequence should be
> > emitted as '<' 'char' '>' (see: printk:print_prefix)
> >
> > Maybe this should be added to stable from v3.6
> > when KERN_SOH_ASCII was first added.
>
> You mean call the problem a regression and try to restore the original
> 3.5 behaviour?

Yes.

I added KERN_SOH_ASCII so to me it's a regression.

> However I have to confess that I don't really like the old behaviour.
> I'd view it as contradicting the normal behaviours of consoles
> (including the kgdbcon console). Why should printk() inside kdb show
> different text to printk() outside kdb? For me, having <5> and <c>
> scribbled all over the output of an "sr" command (which I think is
> probably the heaviest user of printk() inside kdb) never struck me as
> adding much value.
>
> Is the above paragraph convincing?

I don't use it so I have a useful opinion.

I don't recall that anyone has reported it in the
2+ years since so it doesn't seem widely used.

But then again, this is a resend and I don't recall
seeing it the first time either.

> On the other hand if you really mean "perhaps and maybe" then I'd prefer
> to leave it as it it.

Your choice.

btw: in the patch I suggest using printk_skip_level
instead of the direct test here:

+ cp = kdb_buffer;
+ if (cp[0] == KERN_SOH_ASCII && cp[1] != '\0')
+ cp += 2;

so this could be

cp = printk_skip_level(kdb_buffer);


--
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/