From: Andrew Morton <akpm@linux-foundation.org>
To: mm-commits@vger.kernel.org, josh@joshtriplett.org,
adobriyan@gmail.com, deller@gmx.de, akpm@linux-foundation.org
Subject: [failures] lib-dump_stack-add-dump_stack_print_cmdline-and-wire-up-in-dump_stack_print_info.patch removed from -mm tree
Date: Mon, 22 Aug 2022 14:02:06 -0700 [thread overview]
Message-ID: <20220822210207.25EC7C433D7@smtp.kernel.org> (raw)
The quilt patch titled
Subject: lib/dump_stack: add dump_stack_print_cmdline() and wire up in dump_stack_print_info()
has been removed from the -mm tree. Its filename was
lib-dump_stack-add-dump_stack_print_cmdline-and-wire-up-in-dump_stack_print_info.patch
This patch was dropped because it had testing failures
------------------------------------------------------
From: Helge Deller <deller@gmx.de>
Subject: lib/dump_stack: add dump_stack_print_cmdline() and wire up in dump_stack_print_info()
Date: Mon, 8 Aug 2022 15:09:15 +0200
Add the function dump_stack_print_cmdline() which can be used by arch code
to print the command line of the current processs. This function is
useful in arch code when dumping information for a faulting process.
Wire this function up in the dump_stack_print_info() function to include
the dumping of the command line for architectures which use
dump_stack_print_info().
As an example, with this patch a failing glibc testcase (which uses
ld.so.1 as starting program) up to now reported just "ld.so.1" failing:
do_page_fault() command='ld.so.1' type=15 address=0x565921d8 in libc.so[f7339000+1bb000]
trap #15: Data TLB miss fault, vm_start = 0x0001a000, vm_end = 0x0001b000
and now it reports in addition:
ld.so.1[1151] cmdline: /home/gnu/glibc/objdir/elf/ld.so.1 --library-path =
/home/gnu/glibc/objdir:/home/gnu/glibc/objdir/math:/home/gnu/
/home/gnu/glibc/objdir/malloc/tst-safe-linking-malloc-hugetlb1
Josh Triplett noted that dumping such command line parameters into syslog
may theoretically lead to information disclosure. That's why this patch
checks the value of the kptr_restrict sysctl variable and will not print
any information if kptr_restrict==2, and will not show the program
parameters if kptr_restrict==1.
Link: https://lkml.kernel.org/r/20220808130917.30760-3-deller@gmx.de
Signed-off-by: Helge Deller <deller@gmx.de>
Cc: Alexey Dobriyan <adobriyan@gmail.com>
Cc: Josh Triplett <josh@joshtriplett.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
include/linux/printk.h | 5 +++++
lib/dump_stack.c | 34 ++++++++++++++++++++++++++++++++++
2 files changed, 39 insertions(+)
--- a/include/linux/printk.h~lib-dump_stack-add-dump_stack_print_cmdline-and-wire-up-in-dump_stack_print_info
+++ a/include/linux/printk.h
@@ -191,6 +191,7 @@ u32 log_buf_len_get(void);
void log_buf_vmcoreinfo_setup(void);
void __init setup_log_buf(int early);
__printf(1, 2) void dump_stack_set_arch_desc(const char *fmt, ...);
+void dump_stack_print_cmdline(const char *log_lvl);
void dump_stack_print_info(const char *log_lvl);
void show_regs_print_info(const char *log_lvl);
extern asmlinkage void dump_stack_lvl(const char *log_lvl) __cold;
@@ -262,6 +263,10 @@ static inline __printf(1, 2) void dump_s
{
}
+static inline void dump_stack_print_cmdline(const char *log_lvl)
+{
+}
+
static inline void dump_stack_print_info(const char *log_lvl)
{
}
--- a/lib/dump_stack.c~lib-dump_stack-add-dump_stack_print_cmdline-and-wire-up-in-dump_stack_print_info
+++ a/lib/dump_stack.c
@@ -14,6 +14,7 @@
#include <linux/kexec.h>
#include <linux/utsname.h>
#include <linux/stop_machine.h>
+#include <linux/proc_fs.h>
static char dump_stack_arch_desc_str[128];
@@ -46,6 +47,37 @@ void __init dump_stack_set_arch_desc(con
#endif
/**
+ * dump_stack_print_cmdline - print the command line of current process
+ * @log_lvl: log level
+ */
+void dump_stack_print_cmdline(const char *log_lvl)
+{
+ char cmdline[256];
+
+ if (kptr_restrict >= 2)
+ return; /* never show command line */
+
+ /* get command line */
+ get_task_cmdline_kernel(current, cmdline, sizeof(cmdline));
+
+ if (kptr_restrict == 1) {
+ char *p;
+
+ /* if restricted show program path only */
+ p = strchr(cmdline, ' ');
+ if (p) {
+ *p = 0;
+ strlcat(cmdline,
+ " ... [parameters hidden due to kptr_restrict]",
+ sizeof(cmdline));
+ }
+ }
+
+ printk("%s%s[%d] cmdline: %s\n", log_lvl, current->comm,
+ current->pid, cmdline);
+}
+
+/**
* dump_stack_print_info - print generic debug info for dump_stack()
* @log_lvl: log level
*
@@ -62,6 +94,8 @@ void dump_stack_print_info(const char *l
(int)strcspn(init_utsname()->version, " "),
init_utsname()->version, BUILD_ID_VAL);
+ dump_stack_print_cmdline(log_lvl);
+
if (dump_stack_arch_desc_str[0] != '\0')
printk("%sHardware name: %s\n",
log_lvl, dump_stack_arch_desc_str);
_
Patches currently in -mm which might be from deller@gmx.de are
x86-fault-dump-command-line-of-faulting-process-to-syslog.patch
arc-use-generic-dump_stack_print_cmdline-implementation.patch
reply other threads:[~2022-08-22 21:02 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220822210207.25EC7C433D7@smtp.kernel.org \
--to=akpm@linux-foundation.org \
--cc=adobriyan@gmail.com \
--cc=deller@gmx.de \
--cc=josh@joshtriplett.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mm-commits@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.