| From 1d02b444b8d1345ea4708db3bab4db89a7784b55 Mon Sep 17 00:00:00 2001 |
| From: Randy Dunlap <rdunlap@infradead.org> |
| Date: Wed, 2 Mar 2022 19:17:44 -0800 |
| Subject: tracing: Fix return value of __setup handlers |
| |
| From: Randy Dunlap <rdunlap@infradead.org> |
| |
| commit 1d02b444b8d1345ea4708db3bab4db89a7784b55 upstream. |
| |
| __setup() handlers should generally return 1 to indicate that the |
| boot options have been handled. |
| |
| Using invalid option values causes the entire kernel boot option |
| string to be reported as Unknown and added to init's environment |
| strings, polluting it. |
| |
| Unknown kernel command line parameters "BOOT_IMAGE=/boot/bzImage-517rc6 |
| kprobe_event=p,syscall_any,$arg1 trace_options=quiet |
| trace_clock=jiffies", will be passed to user space. |
| |
| Run /sbin/init as init process |
| with arguments: |
| /sbin/init |
| with environment: |
| HOME=/ |
| TERM=linux |
| BOOT_IMAGE=/boot/bzImage-517rc6 |
| kprobe_event=p,syscall_any,$arg1 |
| trace_options=quiet |
| trace_clock=jiffies |
| |
| Return 1 from the __setup() handlers so that init's environment is not |
| polluted with kernel boot options. |
| |
| Link: lore.kernel.org/r/64644a2f-4a20-bab3-1e15-3b2cdd0defe3@omprussia.ru |
| Link: https://lkml.kernel.org/r/20220303031744.32356-1-rdunlap@infradead.org |
| |
| Cc: stable@vger.kernel.org |
| Fixes: 7bcfaf54f591 ("tracing: Add trace_options kernel command line parameter") |
| Fixes: e1e232ca6b8f ("tracing: Add trace_clock=<clock> kernel parameter") |
| Fixes: 970988e19eb0 ("tracing/kprobe: Add kprobe_event= boot parameter") |
| Signed-off-by: Randy Dunlap <rdunlap@infradead.org> |
| Reported-by: Igor Zhbanov <i.zhbanov@omprussia.ru> |
| Acked-by: Masami Hiramatsu <mhiramat@kernel.org> |
| Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| kernel/trace/trace.c | 4 ++-- |
| kernel/trace/trace_kprobe.c | 2 +- |
| 2 files changed, 3 insertions(+), 3 deletions(-) |
| |
| --- a/kernel/trace/trace.c |
| +++ b/kernel/trace/trace.c |
| @@ -219,7 +219,7 @@ static char trace_boot_options_buf[MAX_T |
| static int __init set_trace_boot_options(char *str) |
| { |
| strlcpy(trace_boot_options_buf, str, MAX_TRACER_SIZE); |
| - return 0; |
| + return 1; |
| } |
| __setup("trace_options=", set_trace_boot_options); |
| |
| @@ -230,7 +230,7 @@ static int __init set_trace_boot_clock(c |
| { |
| strlcpy(trace_boot_clock_buf, str, MAX_TRACER_SIZE); |
| trace_boot_clock = trace_boot_clock_buf; |
| - return 0; |
| + return 1; |
| } |
| __setup("trace_clock=", set_trace_boot_clock); |
| |
| --- a/kernel/trace/trace_kprobe.c |
| +++ b/kernel/trace/trace_kprobe.c |
| @@ -430,7 +430,7 @@ static int disable_trace_kprobe(struct t |
| */ |
| trace_probe_remove_file(tp, file); |
| |
| - return 0; |
| + return 1; |
| } |
| |
| #if defined(CONFIG_DYNAMIC_FTRACE) && \ |