[PATCH 0/8] Rework KERN_<LEVEL>
From: Kay Sievers <hidden>
Date: 2012-06-06 00:13:47
Also in:
alsa-devel, linux-btrfs, lkml
On Wed, Jun 6, 2012 at 2:07 AM, Joe Perches [off-list ref] wrote:
On Tue, 2012-06-05 at 16:58 -0700, Andrew Morton wrote:quoted
?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