Re: [PATCH 0/8] Rework KERN_<LEVEL>

From: Kay Sievers
Date: Tue Jun 05 2012 - 20:14:29 EST


On Wed, Jun 6, 2012 at 2:07 AM, Joe Perches <joe@xxxxxxxxxxx> wrote:
> On Tue, 2012-06-05 at 16:58 -0700, Andrew Morton wrote:
>> Âecho "\0014Hello Joe" > /dev/kmsg
>
> # echo -e "\x014Hello Me" > /dev/kmsg
> gives:
> 12,778,4057982669;Hello Me
>
> #echo -e "\x011Hello Me_2" > /dev/kmsg
> gives:
> 12,779,4140452093;Hello Me_2
>
> I didn't change devkmsg_writev so the
> original parsing style for "<.>" is
> unchanged.
>
> from printk.c:
>
> static ssize_t devkmsg_writev(struct kiocb *iocb, const struct iovec *iv,
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âunsigned long count, loff_t pos)
> [...]
> Â Â Â Âint level = default_message_loglevel;
> [...]
> Â Â Â Âif (line[0] == '<') {
> Â Â Â Â Â Â Â Âchar *endp = NULL;
>
> Â Â Â Â Â Â Â Âi = simple_strtoul(line+1, &endp, 10);
> Â Â Â Â Â Â Â Âif (endp && endp[0] == '>') {
> Â Â Â Â Â Â Â Â Â Â Â Âlevel = i & 7;
> Â Â Â Â Â Â Â Â Â Â Â Âif (i >> 3)
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âfacility = i >> 3;
> Â Â Â Â Â Â Â Â Â Â Â Âendp++;
> Â Â Â Â Â Â Â Â Â Â Â Âlen -= endp - line;
> Â Â Â Â Â Â Â Â Â Â Â Âline = endp;
> Â Â Â Â Â Â Â Â}
> Â Â Â Â}
> Â Â Â Âline[len] = '\0';
>
> Â Â Â Âprintk_emit(facility, level, NULL, 0, "%s", line);
> []
>
> level is what matters.
>
> from dmesg -r
>
> <12>[ 2462.339252] \001Hello Andrew
> <9>[ 2516.023444] Hello Andrew
> <12>[ 3046.752764] \x01Hello Kay
> <12>[ 3940.871850] \x01Hello Kay
> <12>[ 4057.982669] Hello Me
> <12>[ 4140.452093] Hello Me_2

The question is what happens if you inject your new binary two-byte
prefix, like:
echo -e "\x01\x02Hello" > /dev/kmsg

And if that changes the log-level to "2" instead of the default "4"?

(assuming that I read your patch right, otherwise please correct the
bytes, but use the full sequence which your patch will recognize as an
internal level marker; seems your examples are all not triggering that)

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