From a52f630e40ff8f7abc266bd4f1fe09f9087faeaa Mon Sep 17 00:00:00 2001 From: John Pittman Date: Thu, 18 Feb 2021 10:55:50 -0500 Subject: [PATCH 1/6] log: change log level print in older kernels In older kernels that have the variable-length-record log_buf, the log level and the log flags/facility are not separated. Since the log level is only the last three bits, and the flags/facility and level are separated in 5.10 and later kernels, only print those last three bits when using 'log -m'. [ kh: modified commit message ] Suggested-by: David Jeffery Signed-off-by: John Pittman --- defs.h | 1 + help.c | 5 +++-- kernel.c | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/defs.h b/defs.h index 35cdac20420c..35b983abd403 100644 --- a/defs.h +++ b/defs.h @@ -5627,6 +5627,7 @@ void clone_bt_info(struct bt_info *, struct bt_info *, struct task_context *); void dump_kernel_table(int); void dump_bt_info(struct bt_info *, char *where); void dump_log(int); +#define LOG_LEVEL(v) ((v) & 0x07) #define SHOW_LOG_LEVEL (0x1) #define SHOW_LOG_DICT (0x2) #define SHOW_LOG_TEXT (0x4) diff --git a/help.c b/help.c index 587c7173f495..85b334a0419e 100644 --- a/help.c +++ b/help.c @@ -3906,8 +3906,9 @@ char *help_log[] = { " applicable to the variable-length record format.", " -m Display the message log level in brackets preceding each message. For", " the variable-length record format, the level will be displayed in ", -" hexadecimal, and depending upon the kernel version, also contains the", -" facility or flags bits.", +" hexadecimal. In older kernels, by default, the facility/flag bits", +" will be stripped to only show the level, but if needed, can still be", +" shown with 'set debug 1'.", " -a Dump the audit logs remaining in kernel audit buffers that have not", " been copied out to the user-space audit daemon.", " ", diff --git a/kernel.c b/kernel.c index ac765e302639..735263cbcd75 100644 --- a/kernel.c +++ b/kernel.c @@ -5262,6 +5262,8 @@ dump_log_entry(char *logptr, int msg_flags) fprintf(fp, "%s", buf); } + level = LOG_LEVEL(level); + if (msg_flags & SHOW_LOG_LEVEL) { sprintf(buf, "<%x>", level); ilen += strlen(buf); -- 2.29.2