* [PATCH 0/8] Rework KERN_<LEVEL> @ 2012-06-05 9:46 Joe Perches 2012-06-05 9:46 ` [PATCH 3/8] arch: Remove direct definitions of KERN_<LEVEL> uses Joe Perches 2012-06-05 21:28 ` [PATCH 0/8] Rework KERN_<LEVEL> Andrew Morton 0 siblings, 2 replies; 28+ messages in thread From: Joe Perches @ 2012-06-05 9:46 UTC (permalink / raw) To: linux-arm-kernel KERN_<LEVEL> currently takes up 3 bytes. Shrink the kernel size by using an ASCII SOH and then the level byte. Remove the need for KERN_CONT. Convert directly embedded uses of <.> to KERN_<LEVEL> Joe Perches (8): printk: Add generic functions to find KERN_<LEVEL> headers printk: Add kern_levels.h to make KERN_<LEVEL> available for asm use arch: Remove direct definitions of KERN_<LEVEL> uses btrfs: Use printk_get_level and printk_skip_level, add __printf, fix fallout sound: Use printk_get_level and printk_skip_level staging: wlags49_h2: Remove direct declarations of KERN_<LEVEL> prefixes printk: Convert the format for KERN_<LEVEL> to a 2 byte pattern printk: Remove the now unnecessary "C" annotation for KERN_CONT arch/arm/lib/io-acorn.S | 3 +- arch/arm/vfp/vfphw.S | 7 +++-- arch/frv/kernel/kernel_thread.S | 2 +- drivers/staging/wlags49_h2/hcf.c | 8 +++--- drivers/staging/wlags49_h2/wl_main.c | 4 +- fs/btrfs/ctree.h | 13 ++++++++++ fs/btrfs/disk-io.c | 2 +- fs/btrfs/relocation.c | 2 +- fs/btrfs/super.c | 41 +++++++++++++++++++++++++++++----- include/linux/kern_levels.h | 25 ++++++++++++++++++++ include/linux/printk.h | 41 +++++++++++++++++++-------------- kernel/printk.c | 14 +++++++---- sound/core/misc.c | 13 +++++++--- 13 files changed, 130 insertions(+), 45 deletions(-) create mode 100644 include/linux/kern_levels.h -- 1.7.8.111.gad25c.dirty ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 3/8] arch: Remove direct definitions of KERN_<LEVEL> uses 2012-06-05 9:46 [PATCH 0/8] Rework KERN_<LEVEL> Joe Perches @ 2012-06-05 9:46 ` Joe Perches 2012-06-05 21:28 ` [PATCH 0/8] Rework KERN_<LEVEL> Andrew Morton 1 sibling, 0 replies; 28+ messages in thread From: Joe Perches @ 2012-06-05 9:46 UTC (permalink / raw) To: linux-arm-kernel Add #include <linux/kern_levels.h> so that the #define KERN_<LEVEL> macros don't have to be duplicated. Signed-off-by: Joe Perches <joe@perches.com> --- arch/arm/lib/io-acorn.S | 3 ++- arch/arm/vfp/vfphw.S | 7 ++++--- arch/frv/kernel/kernel_thread.S | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/arch/arm/lib/io-acorn.S b/arch/arm/lib/io-acorn.S index 1b197ea..69719ba 100644 --- a/arch/arm/lib/io-acorn.S +++ b/arch/arm/lib/io-acorn.S @@ -11,13 +11,14 @@ * */ #include <linux/linkage.h> +#include <linux/kern_levels.h> #include <asm/assembler.h> .text .align .Liosl_warning: - .ascii "<4>insl/outsl not implemented, called from %08lX\0" + .ascii KERN_WARNING "insl/outsl not implemented, called from %08lX\0" .align /* diff --git a/arch/arm/vfp/vfphw.S b/arch/arm/vfp/vfphw.S index 2d30c7f..d50f0e4 100644 --- a/arch/arm/vfp/vfphw.S +++ b/arch/arm/vfp/vfphw.S @@ -16,6 +16,7 @@ */ #include <asm/thread_info.h> #include <asm/vfpmacros.h> +#include <linux/kern_levels.h> #include "../kernel/entry-header.S" .macro DBGSTR, str @@ -24,7 +25,7 @@ add r0, pc, #4 bl printk b 1f - .asciz "<7>VFP: \str\n" + .asciz KERN_DEBUG "VFP: \str\n" .balign 4 1: ldmfd sp!, {r0-r3, ip, lr} #endif @@ -37,7 +38,7 @@ add r0, pc, #4 bl printk b 1f - .asciz "<7>VFP: \str\n" + .asciz KERN_DEBUG "VFP: \str\n" .balign 4 1: ldmfd sp!, {r0-r3, ip, lr} #endif @@ -52,7 +53,7 @@ add r0, pc, #4 bl printk b 1f - .asciz "<7>VFP: \str\n" + .asciz KERN_DEBUG "VFP: \str\n" .balign 4 1: ldmfd sp!, {r0-r3, ip, lr} #endif diff --git a/arch/frv/kernel/kernel_thread.S b/arch/frv/kernel/kernel_thread.S index 4531c83..f0e5294 100644 --- a/arch/frv/kernel/kernel_thread.S +++ b/arch/frv/kernel/kernel_thread.S @@ -10,10 +10,10 @@ */ #include <linux/linkage.h> +#include <linux/kern_levels.h> #include <asm/unistd.h> #define CLONE_VM 0x00000100 /* set if VM shared between processes */ -#define KERN_ERR "<3>" .section .rodata kernel_thread_emsg: -- 1.7.8.111.gad25c.dirty ^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-05 9:46 [PATCH 0/8] Rework KERN_<LEVEL> Joe Perches 2012-06-05 9:46 ` [PATCH 3/8] arch: Remove direct definitions of KERN_<LEVEL> uses Joe Perches @ 2012-06-05 21:28 ` Andrew Morton 2012-06-05 21:53 ` Kay Sievers ` (2 more replies) 1 sibling, 3 replies; 28+ messages in thread From: Andrew Morton @ 2012-06-05 21:28 UTC (permalink / raw) To: linux-arm-kernel On Tue, 5 Jun 2012 02:46:29 -0700 Joe Perches <joe@perches.com> wrote: > KERN_<LEVEL> currently takes up 3 bytes. > Shrink the kernel size by using an ASCII SOH and then the level byte. > Remove the need for KERN_CONT. > Convert directly embedded uses of <.> to KERN_<LEVEL> What an epic patchset. I guess that saving a byte per printk does make the world a better place, and forcibly ensuring that nothing is dependent upon the internal format of the KERN_foo strings is nice. Unfortunately the <n> thing is part of the kernel ABI: echo "<4>foo" > /dev/kmsg devkmsg_writev() does weird and wonderful things with facilities/levels. That function incorrectly returns "success" when copy_from_user() faults, btw. It also babbles on about LOG_USER and LOG_KERN without ever defining these things. I guess they're userspace-only concepts and are hardwired to 0 and 1 in the kernel. Or not. So what to do about /dev/kmsg? I'd say "nothing": we retain "<n>" as the externally-presented kernel format for a facility level, and the fact that the kernel internally uses a different encoding is hidden from userspace. And if the user does echo "\0014foo" > /dev/kmsg then I guess we should pass it straight through, retaining the \0014. But from my reading of your code, this doesn't work - vprintk_emit() will go ahead and strip and interpret the \0014, evading the stuff which devkmsg_writev() did. ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-05 21:28 ` [PATCH 0/8] Rework KERN_<LEVEL> Andrew Morton @ 2012-06-05 21:53 ` Kay Sievers 2012-06-05 22:11 ` Joe Perches 2012-06-05 22:55 ` Kay Sievers 2 siblings, 0 replies; 28+ messages in thread From: Kay Sievers @ 2012-06-05 21:53 UTC (permalink / raw) To: linux-arm-kernel On Tue, Jun 5, 2012 at 11:28 PM, Andrew Morton <akpm@linux-foundation.org> wrote: > On Tue, ?5 Jun 2012 02:46:29 -0700 > Joe Perches <joe@perches.com> wrote: > >> KERN_<LEVEL> currently takes up 3 bytes. >> Shrink the kernel size by using an ASCII SOH and then the level byte. >> Remove the need for KERN_CONT. >> Convert directly embedded uses of <.> to KERN_<LEVEL> > > What an epic patchset. ?I guess that saving a byte per printk does make > the world a better place, and forcibly ensuring that nothing is > dependent upon the internal format of the KERN_foo strings is nice. > > > Unfortunately the <n> thing is part of the kernel ABI: > > ? ? ? ?echo "<4>foo" > /dev/kmsg > > devkmsg_writev() does weird and wonderful things with > facilities/levels. ?That function incorrectly returns "success" when > copy_from_user() faults, btw. ?It also babbles on about LOG_USER and > LOG_KERN without ever defining these things. ?I guess they're > userspace-only concepts and are hardwired to 0 and 1 in the kernel. ?Or > not. It's as old as BSD, defined by syslog(3), used by glibc. The whole <%u> prefix notation and the LOG_* names come from there. The kernel is just user/facility == 0, so it never really was apparent that the whole concept has more than a log level in that number. Userspace syslog defines these pretty stupid numbers: /* facility codes */ #define LOG_KERN (0<<3) /* kernel messages */ #define LOG_USER (1<<3) /* random user-level messages */ #define LOG_MAIL (2<<3) /* mail system */ #define LOG_DAEMON (3<<3) /* system daemons */ #define LOG_AUTH (4<<3) /* security/authorization messages */ #define LOG_SYSLOG (5<<3) /* messages generated internally by syslogd */ #define LOG_LPR (6<<3) /* line printer subsystem */ #define LOG_NEWS (7<<3) /* network news subsystem */ #define LOG_UUCP (8<<3) /* UUCP subsystem */ #define LOG_CRON (9<<3) /* clock daemon */ #define LOG_AUTHPRIV (10<<3) /* security/authorization messages (private) */ #define LOG_FTP (11<<3) /* ftp daemon */ but it *can* still all be pretty useful, and people *can* get creative with facility numbers if they want to, as we have like 13 bits@the moment to use for the facility which is stored in the kernel log buffer. :) /dev/kmsg just enforces LOG_USER, if userspace tries to inject stuff with LOG_KERN, which it should not be allowed. The non-LOG_KERN number itself has not much meaning it just says: "this is not from the kernel" which is important to keep in the message. Als, dmesg(1) has a -k option, that filters out all userspace-injected stuff. > So what to do about /dev/kmsg? ?I'd say "nothing": we retain "<n>" as > the externally-presented kernel format for a facility level, and the > fact that the kernel internally uses a different encoding is hidden > from userspace. Yeah, I think so. Yeah, we strip the <> at printk() time, add the <> back at output time; they are not stored internally anymore, so that should not affect the current behaviour. > And if the user does > > ? ? ? ?echo "\0014foo" > /dev/kmsg > > then I guess we should pass it straight through, retaining the \0014. > But from my reading of your code, this doesn't work - vprintk_emit() > will go ahead and strip and interpret the \0014, evading the stuff > which devkmsg_writev() did. We should make it not accept faked prefixes, yes. It should be impossible to let messages look like they originated from the kernel, just like the current code enforces a non-LOG_KERN <> prefix. Kay ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-05 21:28 ` [PATCH 0/8] Rework KERN_<LEVEL> Andrew Morton 2012-06-05 21:53 ` Kay Sievers @ 2012-06-05 22:11 ` Joe Perches 2012-06-05 22:17 ` Andrew Morton 2012-06-05 22:55 ` Kay Sievers 2 siblings, 1 reply; 28+ messages in thread From: Joe Perches @ 2012-06-05 22:11 UTC (permalink / raw) To: linux-arm-kernel On Tue, 2012-06-05 at 14:28 -0700, Andrew Morton wrote: > Unfortunately the <n> thing is part of the kernel ABI: > > echo "<4>foo" > /dev/kmsg Which works the same way it did before. ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-05 22:11 ` Joe Perches @ 2012-06-05 22:17 ` Andrew Morton 2012-06-05 22:49 ` Joe Perches 0 siblings, 1 reply; 28+ messages in thread From: Andrew Morton @ 2012-06-05 22:17 UTC (permalink / raw) To: linux-arm-kernel On Tue, 05 Jun 2012 15:11:43 -0700 Joe Perches <joe@perches.com> wrote: > On Tue, 2012-06-05 at 14:28 -0700, Andrew Morton wrote: > > Unfortunately the <n> thing is part of the kernel ABI: > > > > echo "<4>foo" > /dev/kmsg > > Which works the same way it did before. I didn't say it didn't. What I did say is that echo "\0014">/dev/kmsg will subvert the intent of the new logging code. Or might. But you just ignored all that, forcing me to repeat myself, irritatedly. ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-05 22:17 ` Andrew Morton @ 2012-06-05 22:49 ` Joe Perches 2012-06-05 23:29 ` Andrew Morton 0 siblings, 1 reply; 28+ messages in thread From: Joe Perches @ 2012-06-05 22:49 UTC (permalink / raw) To: linux-arm-kernel On Tue, 2012-06-05 at 15:17 -0700, Andrew Morton wrote: > On Tue, 05 Jun 2012 15:11:43 -0700 > Joe Perches <joe@perches.com> wrote: > > > On Tue, 2012-06-05 at 14:28 -0700, Andrew Morton wrote: > > > Unfortunately the <n> thing is part of the kernel ABI: > > > > > > echo "<4>foo" > /dev/kmsg > > > > Which works the same way it did before. > > I didn't say it didn't. > > What I did say is that echo "\0014">/dev/kmsg will subvert the intent > of the new logging code. Or might. But you just ignored all that, > forcing me to repeat myself, irritatedly. It works the same way before and after the patch. Any write to /dev/kmsg without a KERN_<LEVEL> emits at (1 << 3) + KERN_DEFAULT. Writes with <n> values >= 8 are emitted at that level. ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-05 22:49 ` Joe Perches @ 2012-06-05 23:29 ` Andrew Morton 2012-06-05 23:35 ` Joe Perches 0 siblings, 1 reply; 28+ messages in thread From: Andrew Morton @ 2012-06-05 23:29 UTC (permalink / raw) To: linux-arm-kernel On Tue, 05 Jun 2012 15:49:32 -0700 Joe Perches <joe@perches.com> wrote: > On Tue, 2012-06-05 at 15:17 -0700, Andrew Morton wrote: > > On Tue, 05 Jun 2012 15:11:43 -0700 > > Joe Perches <joe@perches.com> wrote: > > > > > On Tue, 2012-06-05 at 14:28 -0700, Andrew Morton wrote: > > > > Unfortunately the <n> thing is part of the kernel ABI: > > > > > > > > echo "<4>foo" > /dev/kmsg > > > > > > Which works the same way it did before. > > > > I didn't say it didn't. > > > > What I did say is that echo "\0014">/dev/kmsg will subvert the intent > > of the new logging code. Or might. But you just ignored all that, > > forcing me to repeat myself, irritatedly. > > It works the same way before and after the patch. > > Any write to /dev/kmsg without a KERN_<LEVEL> > emits at (1 << 3) + KERN_DEFAULT. > > Writes with <n> values >= 8 are emitted at > that level. What about writes starting with \001n? AFACIT, that will be stripped away and the printk level will be altered. This is new behavior. ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-05 23:29 ` Andrew Morton @ 2012-06-05 23:35 ` Joe Perches 2012-06-05 23:39 ` Kay Sievers 0 siblings, 1 reply; 28+ messages in thread From: Joe Perches @ 2012-06-05 23:35 UTC (permalink / raw) To: linux-arm-kernel On Tue, 2012-06-05 at 16:29 -0700, Andrew Morton wrote: > What about writes starting with \001n? AFACIT, that will be stripped > away and the printk level will be altered. This is new behavior. Nope. # echo "\001Hello Andrew" > /dev/kmsg /dev/kmsg has 12,774,2462339252;\001Hello Andrew 12 is 8 + KERN_DEFAULT # echo "<1>Hello Andrew" > /dev/kmsg /dev/kmsg has: 9,775,2516023444;Hello Andrew ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-05 23:35 ` Joe Perches @ 2012-06-05 23:39 ` Kay Sievers 2012-06-05 23:43 ` Joe Perches 2012-06-05 23:48 ` [PATCH 0/8] Rework KERN_<LEVEL> Joe Perches 0 siblings, 2 replies; 28+ messages in thread From: Kay Sievers @ 2012-06-05 23:39 UTC (permalink / raw) To: linux-arm-kernel On Wed, Jun 6, 2012 at 1:35 AM, Joe Perches <joe@perches.com> wrote: > On Tue, 2012-06-05 at 16:29 -0700, Andrew Morton wrote: >> What about writes starting with \001n? ?AFACIT, that will be stripped >> away and the printk level will be altered. ?This is new behavior. > > Nope. > > # echo "\001Hello Andrew" > /dev/kmsg > /dev/kmsg has > 12,774,2462339252;\001Hello Andrew Try "echo -e"? The stuff is copied verbatim otherwise. Kay ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-05 23:39 ` Kay Sievers @ 2012-06-05 23:43 ` Joe Perches 2012-06-05 23:48 ` Kay Sievers 2012-06-05 23:48 ` [PATCH 0/8] Rework KERN_<LEVEL> Joe Perches 1 sibling, 1 reply; 28+ messages in thread From: Joe Perches @ 2012-06-05 23:43 UTC (permalink / raw) To: linux-arm-kernel On Wed, 2012-06-06 at 01:39 +0200, Kay Sievers wrote: > On Wed, Jun 6, 2012 at 1:35 AM, Joe Perches <joe@perches.com> wrote: > > On Tue, 2012-06-05 at 16:29 -0700, Andrew Morton wrote: > >> What about writes starting with \001n? AFACIT, that will be stripped > >> away and the printk level will be altered. This is new behavior. > > > > Nope. > > > > # echo "\001Hello Andrew" > /dev/kmsg > > /dev/kmsg has > > 12,774,2462339252;\001Hello Andrew > > Try "echo -e"? The stuff is copied verbatim otherwise. # echo -e "\001Hello Kay" > /dev/kmsg gives 12,776,3046752764;\x01Hello Kay ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-05 23:43 ` Joe Perches @ 2012-06-05 23:48 ` Kay Sievers 2012-06-05 23:52 ` Joe Perches 0 siblings, 1 reply; 28+ messages in thread From: Kay Sievers @ 2012-06-05 23:48 UTC (permalink / raw) To: linux-arm-kernel On Wed, Jun 6, 2012 at 1:43 AM, Joe Perches <joe@perches.com> wrote: > On Wed, 2012-06-06 at 01:39 +0200, Kay Sievers wrote: >> > # echo "\001Hello Andrew" > /dev/kmsg >> > /dev/kmsg has >> > 12,774,2462339252;\001Hello Andrew >> >> Try "echo -e"? The stuff is copied verbatim otherwise. > > # echo -e "\001Hello Kay" > /dev/kmsg > gives > 12,776,3046752764;\x01Hello Kay Don't you need two bytes to trigger the logic? Kay ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-05 23:48 ` Kay Sievers @ 2012-06-05 23:52 ` Joe Perches 2012-06-05 23:58 ` Andrew Morton 0 siblings, 1 reply; 28+ messages in thread From: Joe Perches @ 2012-06-05 23:52 UTC (permalink / raw) To: linux-arm-kernel On Wed, 2012-06-06 at 01:48 +0200, Kay Sievers wrote: > On Wed, Jun 6, 2012 at 1:43 AM, Joe Perches <joe@perches.com> wrote: > > On Wed, 2012-06-06 at 01:39 +0200, Kay Sievers wrote: > > >> > # echo "\001Hello Andrew" > /dev/kmsg > >> > /dev/kmsg has > >> > 12,774,2462339252;\001Hello Andrew > >> > >> Try "echo -e"? The stuff is copied verbatim otherwise. > > > > # echo -e "\001Hello Kay" > /dev/kmsg > > gives > > 12,776,3046752764;\x01Hello Kay > > Don't you need two bytes to trigger the logic? Yes. Angle brackets fore and aft. If you use a "<n>" prefix for write to /dev/kmsg, then it's supported just like before. Otherwise, it's emitted at KERN_DEFAULT. cheers, Joe ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-05 23:52 ` Joe Perches @ 2012-06-05 23:58 ` Andrew Morton 2012-06-06 0:07 ` Joe Perches 0 siblings, 1 reply; 28+ messages in thread From: Andrew Morton @ 2012-06-05 23:58 UTC (permalink / raw) To: linux-arm-kernel On Tue, 05 Jun 2012 16:52:25 -0700 Joe Perches <joe@perches.com> wrote: > On Wed, 2012-06-06 at 01:48 +0200, Kay Sievers wrote: > > On Wed, Jun 6, 2012 at 1:43 AM, Joe Perches <joe@perches.com> wrote: > > > On Wed, 2012-06-06 at 01:39 +0200, Kay Sievers wrote: > > > > >> > # echo "\001Hello Andrew" > /dev/kmsg > > >> > /dev/kmsg has > > >> > 12,774,2462339252;\001Hello Andrew > > >> > > >> Try "echo -e"? The stuff is copied verbatim otherwise. > > > > > > # echo -e "\001Hello Kay" > /dev/kmsg > > > gives > > > 12,776,3046752764;\x01Hello Kay > > > > Don't you need two bytes to trigger the logic? > > Yes. Angle brackets fore and aft. he means echo "\0014Hello Joe" > /dev/kmsg ^ It needs one of [0-7cd] to trigger the prefix handling. ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-05 23:58 ` Andrew Morton @ 2012-06-06 0:07 ` Joe Perches 2012-06-06 0:13 ` Kay Sievers 0 siblings, 1 reply; 28+ messages in thread From: Joe Perches @ 2012-06-06 0:07 UTC (permalink / raw) To: linux-arm-kernel 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 ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-06 0:07 ` Joe Perches @ 2012-06-06 0:13 ` Kay Sievers 2012-06-06 0:19 ` Joe Perches 0 siblings, 1 reply; 28+ messages in thread From: Kay Sievers @ 2012-06-06 0:13 UTC (permalink / raw) To: linux-arm-kernel On Wed, Jun 6, 2012 at 2:07 AM, Joe Perches <joe@perches.com> 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 ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-06 0:13 ` Kay Sievers @ 2012-06-06 0:19 ` Joe Perches 2012-06-06 0:28 ` Kay Sievers 0 siblings, 1 reply; 28+ messages in thread From: Joe Perches @ 2012-06-06 0:19 UTC (permalink / raw) To: linux-arm-kernel On Wed, 2012-06-06 at 02:13 +0200, Kay Sievers wrote: > The question is what happens if you inject your new binary two-byte > prefix, like: > echo -e "\x01\x02Hello" > /dev/kmsg It's not a 2 byte binary. It's a leading ascii SOH and a standard ascii char '0' ... '7' or 'd'. #define KERN_EMERG KERN_SOH "0" /* system is unusable */ #define KERN_ALERT KERN_SOH "1" /* action must be taken immediately */ etc... > And if that changes the log-level to "2" instead of the default "4"? No it doesn't. It's not triggering that because devkmsg_writev does prefix parsing only on the old "<n>" form. ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-06 0:19 ` Joe Perches @ 2012-06-06 0:28 ` Kay Sievers 2012-06-06 0:37 ` Joe Perches 2012-06-06 0:37 ` Andrew Morton 0 siblings, 2 replies; 28+ messages in thread From: Kay Sievers @ 2012-06-06 0:28 UTC (permalink / raw) To: linux-arm-kernel On Wed, Jun 6, 2012 at 2:19 AM, Joe Perches <joe@perches.com> wrote: > On Wed, 2012-06-06 at 02:13 +0200, Kay Sievers wrote: >> The question is what happens if you inject your new binary two-byte >> prefix, like: >> ? echo -e "\x01\x02Hello" > /dev/kmsg > > It's not a 2 byte binary. > It's a leading ascii SOH and a standard ascii char > '0' ... '7' or 'd'. > > #define KERN_EMERG ? ? ?KERN_SOH "0" ? ?/* system is unusable */ > #define KERN_ALERT ? ? ?KERN_SOH "1" ? ?/* action must be taken immediately */ > etc... Ok. >> And if that changes the log-level to "2" instead of the default "4"? > > No it doesn't. So: echo -e "\x012Hello" > /dev/kmsg is still level 4? Sounds all fine then. > It's not triggering that because devkmsg_writev does > prefix parsing only on the old "<n>" form. Yeah, but printk_emit() will not try to parse it? I did not check, but with your change, the prefix parsing in printk_emit() is still skipped if a level is given as a parameter to printk_emit(), right? Kay ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-06 0:28 ` Kay Sievers @ 2012-06-06 0:37 ` Joe Perches 2012-06-06 0:37 ` Andrew Morton 1 sibling, 0 replies; 28+ messages in thread From: Joe Perches @ 2012-06-06 0:37 UTC (permalink / raw) To: linux-arm-kernel On Wed, 2012-06-06 at 02:28 +0200, Kay Sievers wrote: > On Wed, Jun 6, 2012 at 2:19 AM, Joe Perches <joe@perches.com> wrote: > > On Wed, 2012-06-06 at 02:13 +0200, Kay Sievers wrote: > >> The question is what happens if you inject your new binary two-byte > >> prefix, like: > >> echo -e "\x01\x02Hello" > /dev/kmsg > > > > It's not a 2 byte binary. > > It's a leading ascii SOH and a standard ascii char > > '0' ... '7' or 'd'. > > > > #define KERN_EMERG KERN_SOH "0" /* system is unusable */ > > #define KERN_ALERT KERN_SOH "1" /* action must be taken immediately */ > > etc... > > Ok. > > >> And if that changes the log-level to "2" instead of the default "4"? > > > > No it doesn't. > > So: > echo -e "\x012Hello" > /dev/kmsg > is still level 4? Sounds all fine then. Yes. # echo -e "\x012Hello again Kay" > /dev/kmsg gives: 12,780,6031964979;Hello again Kay > > It's not triggering that because devkmsg_writev does > > prefix parsing only on the old "<n>" form. > > Yeah, but printk_emit() will not try to parse it? I did not check, but > with your change, the prefix parsing in printk_emit() is still skipped > if a level is given as a parameter to printk_emit(), right? If level is not -1, then whatever prefix level the string has is ignored by vprintk_emit. from vprintk_emit: /* strip syslog prefix and extract log level or control flags */ kern_level = printk_get_level(text); if (kern_level) { const char *end_of_header = printk_skip_level(text); switch (kern_level) { case '0' ... '7': if (level == -1) level = kern_level - '0'; case 'd': /* Strip d KERN_DEFAULT, start new line */ plen = 0; default: if (!new_text_line) { log_buf_emit_char('\n'); new_text_line = 1; } } text_len -= end_of_header - text; text = (char *)end_of_header; } Only level == -1 will use the prefix level. devkmsg_writev always passes a non -1 level. cheers, Joe ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-06 0:28 ` Kay Sievers 2012-06-06 0:37 ` Joe Perches @ 2012-06-06 0:37 ` Andrew Morton 2012-06-06 0:40 ` Joe Perches 1 sibling, 1 reply; 28+ messages in thread From: Andrew Morton @ 2012-06-06 0:37 UTC (permalink / raw) To: linux-arm-kernel On Tue, 05 Jun 2012 17:07:27 -0700 Joe Perches <joe@perches.com> 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 That's changed behavior. On Wed, 6 Jun 2012 02:28:39 +0200 Kay Sievers <kay@vrfy.org> wrote: > Yeah, but printk_emit() will not try to parse it? I did not check, but > with your change, the prefix parsing in printk_emit() is still skipped > if a level is given as a parameter to printk_emit(), right? printk_emit() does parse the leading \0014, and then skips over it, removing it from the output stream. printk_emit() then throws away the resulting level because devkmsg_writev() did not pass in level==-1. ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-06 0:37 ` Andrew Morton @ 2012-06-06 0:40 ` Joe Perches 2012-06-06 0:46 ` Andrew Morton 0 siblings, 1 reply; 28+ messages in thread From: Joe Perches @ 2012-06-06 0:40 UTC (permalink / raw) To: linux-arm-kernel On Tue, 2012-06-05 at 17:37 -0700, Andrew Morton wrote: > On Tue, 05 Jun 2012 17:07:27 -0700 Joe Perches <joe@perches.com> 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 > > That's changed behavior. Which is an improvement too. I very much doubt a single app will change because of this. > printk_emit() does parse the leading \0014, and then skips over it, > removing it from the output stream. printk_emit() then throws away the > resulting level because devkmsg_writev() did not pass in level==-1. I'm glad you know how it works now. cheers, Joe ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-06 0:40 ` Joe Perches @ 2012-06-06 0:46 ` Andrew Morton 2012-06-06 1:10 ` Kay Sievers 0 siblings, 1 reply; 28+ messages in thread From: Andrew Morton @ 2012-06-06 0:46 UTC (permalink / raw) To: linux-arm-kernel On Tue, 05 Jun 2012 17:40:05 -0700 Joe Perches <joe@perches.com> wrote: > On Tue, 2012-06-05 at 17:37 -0700, Andrew Morton wrote: > > On Tue, 05 Jun 2012 17:07:27 -0700 Joe Perches <joe@perches.com> 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 > > > > That's changed behavior. > > Which is an improvement too. No it isn't. It exposes internal kernel implementation details in random weird inexplicable ways. It doesn't seem at all important though. > I very much doubt a single app will change > because of this. I doubt it as well. > > printk_emit() does parse the leading \0014, and then skips over it, > > removing it from the output stream. printk_emit() then throws away the > > resulting level because devkmsg_writev() did not pass in level==-1. > > I'm glad you know how it works now. It's nice to see you learning about it as well. ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-06 0:46 ` Andrew Morton @ 2012-06-06 1:10 ` Kay Sievers 2012-06-06 2:06 ` Joe Perches 2012-06-06 3:04 ` [PATCH 9/8] printk: Only look for prefix levels in kernel messages Joe Perches 0 siblings, 2 replies; 28+ messages in thread From: Kay Sievers @ 2012-06-06 1:10 UTC (permalink / raw) To: linux-arm-kernel On Wed, Jun 6, 2012 at 2:46 AM, Andrew Morton <akpm@linux-foundation.org> wrote: > On Tue, 05 Jun 2012 17:40:05 -0700 Joe Perches <joe@perches.com> wrote: > >> On Tue, 2012-06-05 at 17:37 -0700, Andrew Morton wrote: >> > On Tue, 05 Jun 2012 17:07:27 -0700 Joe Perches <joe@perches.com> 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 >> > >> > That's changed behavior. >> >> Which is an improvement too. > > No it isn't. ?It exposes internal kernel implementation details in > random weird inexplicable ways. ?It doesn't seem at all important > though. > >> I very much doubt a single app will change >> because of this. > > I doubt it as well. Yeah, the value of injecting such binary data is kind of questionable. :) Joe, maybe you can change printk_emit() to skip the prefix detection/stripping if a prefix is already passed to the function? Kay ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-06 1:10 ` Kay Sievers @ 2012-06-06 2:06 ` Joe Perches 2012-06-06 3:04 ` [PATCH 9/8] printk: Only look for prefix levels in kernel messages Joe Perches 1 sibling, 0 replies; 28+ messages in thread From: Joe Perches @ 2012-06-06 2:06 UTC (permalink / raw) To: linux-arm-kernel On Wed, 2012-06-06 at 03:10 +0200, Kay Sievers wrote: > On Wed, Jun 6, 2012 at 2:46 AM, Andrew Morton <akpm@linux-foundation.org> wrote: > > On Tue, 05 Jun 2012 17:40:05 -0700 Joe Perches <joe@perches.com> wrote: > > > >> On Tue, 2012-06-05 at 17:37 -0700, Andrew Morton wrote: > >> > On Tue, 05 Jun 2012 17:07:27 -0700 Joe Perches <joe@perches.com> 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 > >> > > >> > That's changed behavior. > >> > >> Which is an improvement too. > > > > No it isn't. It exposes internal kernel implementation details in > > random weird inexplicable ways. It doesn't seem at all important > > though. > > > >> I very much doubt a single app will change > >> because of this. > > > > I doubt it as well. > > Yeah, the value of injecting such binary data is kind of questionable. :) > > Joe, maybe you can change printk_emit() to skip the prefix > detection/stripping if a prefix is already passed to the function? Sure, it's pretty trivial. Perhaps all binary data data should be elided. Maybe print . for all non-printable ascii chars. ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 9/8] printk: Only look for prefix levels in kernel messages 2012-06-06 1:10 ` Kay Sievers 2012-06-06 2:06 ` Joe Perches @ 2012-06-06 3:04 ` Joe Perches 1 sibling, 0 replies; 28+ messages in thread From: Joe Perches @ 2012-06-06 3:04 UTC (permalink / raw) To: linux-arm-kernel vprintk_emit prefix parsing should only be done for internal kernel messages. This allows existing behavior to be kept in all cases. Signed-off-by: Joe Perches <joe@perches.com> --- kernel/printk.c | 32 +++++++++++++++++--------------- 1 files changed, 17 insertions(+), 15 deletions(-) diff --git a/kernel/printk.c b/kernel/printk.c index 5cd73f7..4e72c07 100644 --- a/kernel/printk.c +++ b/kernel/printk.c @@ -1267,7 +1267,6 @@ asmlinkage int vprintk_emit(int facility, int level, static char cont_buf[LOG_LINE_MAX]; static size_t cont_len; static int cont_level; - int kern_level; static struct task_struct *cont_task; static char textbuf[LOG_LINE_MAX]; char *text = textbuf; @@ -1329,21 +1328,24 @@ asmlinkage int vprintk_emit(int facility, int level, newline = true; } - /* strip syslog prefix and extract log level or control flags */ - kern_level = printk_get_level(text); - if (kern_level) { - const char *end_of_header = printk_skip_level(text); - switch (kern_level) { - case '0' ... '7': - if (level == -1) - level = kern_level - '0'; - case 'd': /* KERN_DEFAULT */ - prefix = true; - case 'c': /* KERN_CONT */ - break; + /* strip kernel syslog prefix and extract log level or control flags */ + if (facility == 0) { + int kern_level = printk_get_level(text); + + if (kern_level) { + const char *end_of_header = printk_skip_level(text); + switch (kern_level) { + case '0' ... '7': + if (level == -1) + level = kern_level - '0'; + case 'd': /* KERN_DEFAULT */ + prefix = true; + case 'c': /* KERN_CONT */ + break; + } + text_len -= end_of_header - text; + text = (char *)end_of_header; } - text_len -= end_of_header - text; - text = (char *)end_of_header; } if (level == -1) ^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-05 23:39 ` Kay Sievers 2012-06-05 23:43 ` Joe Perches @ 2012-06-05 23:48 ` Joe Perches 1 sibling, 0 replies; 28+ messages in thread From: Joe Perches @ 2012-06-05 23:48 UTC (permalink / raw) To: linux-arm-kernel On Wed, 2012-06-06 at 01:39 +0200, Kay Sievers wrote: > Try "echo -e"? The stuff is copied verbatim otherwise. btw: I didn't change the devkmsg_writev function which does the decoding of any "<n>" prefix for printk_emit. ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-05 21:28 ` [PATCH 0/8] Rework KERN_<LEVEL> Andrew Morton 2012-06-05 21:53 ` Kay Sievers 2012-06-05 22:11 ` Joe Perches @ 2012-06-05 22:55 ` Kay Sievers 2012-06-05 23:09 ` Andrew Morton 2 siblings, 1 reply; 28+ messages in thread From: Kay Sievers @ 2012-06-05 22:55 UTC (permalink / raw) To: linux-arm-kernel On Tue, 2012-06-05 at 14:28 -0700, Andrew Morton wrote: > devkmsg_writev() does weird and wonderful things with > facilities/levels. That function incorrectly returns "success" when > copy_from_user() faults, btw. Oh. Better? Thanks, Kay From: Kay Sievers <kay@vrfy.org> Subject: kmsg: /dev/kmsg - properly return possible copy_from_user() failure Reported-By: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Kay Sievers <kay@vrfy.org --- printk.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kernel/printk.c b/kernel/printk.c index 32462d2..6bdacab 100644 --- a/kernel/printk.c +++ b/kernel/printk.c @@ -365,8 +365,10 @@ static ssize_t devkmsg_writev(struct kiocb *iocb, const struct iovec *iv, line = buf; for (i = 0; i < count; i++) { - if (copy_from_user(line, iv[i].iov_base, iv[i].iov_len)) + if (copy_from_user(line, iv[i].iov_base, iv[i].iov_len)) { + ret = -EFAULT; goto out; + } line += iv[i].iov_len; } ^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 0/8] Rework KERN_<LEVEL> 2012-06-05 22:55 ` Kay Sievers @ 2012-06-05 23:09 ` Andrew Morton 0 siblings, 0 replies; 28+ messages in thread From: Andrew Morton @ 2012-06-05 23:09 UTC (permalink / raw) To: linux-arm-kernel On Wed, 06 Jun 2012 00:55:00 +0200 Kay Sievers <kay@vrfy.org> wrote: > On Tue, 2012-06-05 at 14:28 -0700, Andrew Morton wrote: > > > devkmsg_writev() does weird and wonderful things with > > facilities/levels. That function incorrectly returns "success" when > > copy_from_user() faults, btw. > > Oh. Better? > > Thanks, > Kay > > > From: Kay Sievers <kay@vrfy.org> > Subject: kmsg: /dev/kmsg - properly return possible copy_from_user() failure > > Reported-By: Andrew Morton <akpm@linux-foundation.org> > Signed-off-by: Kay Sievers <kay@vrfy.org > --- > printk.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/kernel/printk.c b/kernel/printk.c > index 32462d2..6bdacab 100644 > --- a/kernel/printk.c > +++ b/kernel/printk.c > @@ -365,8 +365,10 @@ static ssize_t devkmsg_writev(struct kiocb *iocb, const struct iovec *iv, > > line = buf; > for (i = 0; i < count; i++) { > - if (copy_from_user(line, iv[i].iov_base, iv[i].iov_len)) > + if (copy_from_user(line, iv[i].iov_base, iv[i].iov_len)) { > + ret = -EFAULT; > goto out; > + } > line += iv[i].iov_len; > } Strictly speaking, when write() encounters an error it should return number-of-bytes-written, or an errno if it wrote zero bytes. So something like --- a/kernel/printk.c~a +++ a/kernel/printk.c @@ -355,7 +355,7 @@ static ssize_t devkmsg_writev(struct kio int level = default_message_loglevel; int facility = 1; /* LOG_USER */ size_t len = iov_length(iv, count); - ssize_t ret = len; + ssize_t ret; if (len > LOG_LINE_MAX) return -EINVAL; @@ -365,8 +365,12 @@ static ssize_t devkmsg_writev(struct kio line = buf; for (i = 0; i < count; i++) { - if (copy_from_user(line, iv[i].iov_base, iv[i].iov_len)) + if (copy_from_user(line, iv[i].iov_base, iv[i].iov_len)) { + ret = line - buf; + if (!ret) + ret = -EFAULT; goto out; + } line += iv[i].iov_len; } @@ -396,6 +400,7 @@ static ssize_t devkmsg_writev(struct kio line[len] = '\0'; printk_emit(facility, level, NULL, 0, "%s", line); + ret = 0; out: kfree(buf); return ret; _ ^ permalink raw reply [flat|nested] 28+ messages in thread
end of thread, other threads:[~2012-06-06 3:04 UTC | newest] Thread overview: 28+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-06-05 9:46 [PATCH 0/8] Rework KERN_<LEVEL> Joe Perches 2012-06-05 9:46 ` [PATCH 3/8] arch: Remove direct definitions of KERN_<LEVEL> uses Joe Perches 2012-06-05 21:28 ` [PATCH 0/8] Rework KERN_<LEVEL> Andrew Morton 2012-06-05 21:53 ` Kay Sievers 2012-06-05 22:11 ` Joe Perches 2012-06-05 22:17 ` Andrew Morton 2012-06-05 22:49 ` Joe Perches 2012-06-05 23:29 ` Andrew Morton 2012-06-05 23:35 ` Joe Perches 2012-06-05 23:39 ` Kay Sievers 2012-06-05 23:43 ` Joe Perches 2012-06-05 23:48 ` Kay Sievers 2012-06-05 23:52 ` Joe Perches 2012-06-05 23:58 ` Andrew Morton 2012-06-06 0:07 ` Joe Perches 2012-06-06 0:13 ` Kay Sievers 2012-06-06 0:19 ` Joe Perches 2012-06-06 0:28 ` Kay Sievers 2012-06-06 0:37 ` Joe Perches 2012-06-06 0:37 ` Andrew Morton 2012-06-06 0:40 ` Joe Perches 2012-06-06 0:46 ` Andrew Morton 2012-06-06 1:10 ` Kay Sievers 2012-06-06 2:06 ` Joe Perches 2012-06-06 3:04 ` [PATCH 9/8] printk: Only look for prefix levels in kernel messages Joe Perches 2012-06-05 23:48 ` [PATCH 0/8] Rework KERN_<LEVEL> Joe Perches 2012-06-05 22:55 ` Kay Sievers 2012-06-05 23:09 ` Andrew Morton
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).