diff options
author | Steven Rostedt <srostedt@redhat.com> | 2013-02-22 12:09:47 -0500 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2013-02-22 12:09:47 -0500 |
commit | a18a10a83e6e20fe84f4303f0cc7f23351729cdb (patch) | |
tree | 65dd4e1c8f27c2a8433bf032f9fb2c8f09c53ab8 | |
parent | c0fbd612e9ebadfe34303759eb37b351c5f57de1 (diff) | |
parent | 1c3000a67a350c7ac31897cf22ec8e4ddd47d3aa (diff) |
Merge tag 'v3.4.33' into v3.4-rt
This is the 3.4.33 stable release
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | include/linux/syslog.h | 6 | ||||
-rw-r--r-- | kernel/printk.c | 13 |
3 files changed, 19 insertions, 2 deletions
@@ -1,6 +1,6 @@ VERSION = 3 PATCHLEVEL = 4 -SUBLEVEL = 32 +SUBLEVEL = 33 EXTRAVERSION = NAME = Saber-toothed Squirrel diff --git a/include/linux/syslog.h b/include/linux/syslog.h index 38911391a139..ce4c66556059 100644 --- a/include/linux/syslog.h +++ b/include/linux/syslog.h @@ -47,6 +47,12 @@ #define SYSLOG_FROM_CALL 0 #define SYSLOG_FROM_FILE 1 +/* + * Syslog priority (PRI) maximum length in char : '<[0-9]{1,3}>' + * See RFC5424 for details +*/ +#define SYSLOG_PRI_MAX_LENGTH 5 + int do_syslog(int type, char __user *buf, int count, bool from_file); #endif /* _LINUX_SYSLOG_H */ diff --git a/kernel/printk.c b/kernel/printk.c index 56d749722555..1330206ac1dd 100644 --- a/kernel/printk.c +++ b/kernel/printk.c @@ -689,8 +689,19 @@ static void call_console_drivers(unsigned start, unsigned end) start_print = start; while (cur_index != end) { if (msg_level < 0 && ((end - cur_index) > 2)) { + /* + * prepare buf_prefix, as a contiguous array, + * to be processed by log_prefix function + */ + char buf_prefix[SYSLOG_PRI_MAX_LENGTH+1]; + unsigned i; + for (i = 0; i < ((end - cur_index)) && (i < SYSLOG_PRI_MAX_LENGTH); i++) { + buf_prefix[i] = LOG_BUF(cur_index + i); + } + buf_prefix[i] = '\0'; /* force '\0' as last string character */ + /* strip log prefix */ - cur_index += log_prefix(&LOG_BUF(cur_index), &msg_level, NULL); + cur_index += log_prefix((const char *)&buf_prefix, &msg_level, NULL); start_print = cur_index; } while (cur_index != end) { |