* [PATCH 5.15 1/2] kallsyms: Make module_kallsyms_on_each_symbol generally available
2024-01-11 21:43 [PATCH 5.15 0/2] tracing/kprobes: Fix symbol counting logic by looking at modules as well Markus Boehme
@ 2024-01-11 21:43 ` Markus Boehme
2024-01-11 21:43 ` [PATCH 5.15 2/2] tracing/kprobes: Fix symbol counting logic by looking at modules as well Markus Boehme
2024-01-13 9:32 ` [PATCH 5.15 0/2] " Greg KH
2 siblings, 0 replies; 4+ messages in thread
From: Markus Boehme @ 2024-01-11 21:43 UTC (permalink / raw)
To: stable
Cc: Jiri Olsa, Christoph Hellwig, Song Liu, Alexei Starovoitov,
Greg Kroah-Hartman, Markus Boehme
From: Jiri Olsa <jolsa@kernel.org>
commit 73feb8d5fa3b755bb51077c0aabfb6aa556fd498 upstream.
Making module_kallsyms_on_each_symbol generally available, so it
can be used outside CONFIG_LIVEPATCH option in following changes.
Rather than adding another ifdef option let's make the function
generally available (when CONFIG_KALLSYMS and CONFIG_MODULES
options are defined).
Cc: Christoph Hellwig <hch@lst.de>
Acked-by: Song Liu <song@kernel.org>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Link: https://lore.kernel.org/r/20221025134148.3300700-2-jolsa@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Stable-dep-of: 926fe783c8a6 ("tracing/kprobes: Fix symbol counting logic by looking at modules as well")
Signed-off-by: Markus Boehme <markubo@amazon.com>
---
include/linux/module.h | 9 +++++++++
kernel/module.c | 2 --
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/include/linux/module.h b/include/linux/module.h
index c9f1200b2312..701c150485b2 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -867,8 +867,17 @@ static inline bool module_sig_ok(struct module *module)
}
#endif /* CONFIG_MODULE_SIG */
+#if defined(CONFIG_MODULES) && defined(CONFIG_KALLSYMS)
int module_kallsyms_on_each_symbol(int (*fn)(void *, const char *,
struct module *, unsigned long),
void *data);
+#else
+static inline int module_kallsyms_on_each_symbol(int (*fn)(void *, const char *,
+ struct module *, unsigned long),
+ void *data)
+{
+ return -EOPNOTSUPP;
+}
+#endif /* CONFIG_MODULES && CONFIG_KALLSYMS */
#endif /* _LINUX_MODULE_H */
diff --git a/kernel/module.c b/kernel/module.c
index 3c90840133c0..ba9f2bb57889 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -4482,7 +4482,6 @@ unsigned long module_kallsyms_lookup_name(const char *name)
return ret;
}
-#ifdef CONFIG_LIVEPATCH
int module_kallsyms_on_each_symbol(int (*fn)(void *, const char *,
struct module *, unsigned long),
void *data)
@@ -4514,7 +4513,6 @@ int module_kallsyms_on_each_symbol(int (*fn)(void *, const char *,
mutex_unlock(&module_mutex);
return ret;
}
-#endif /* CONFIG_LIVEPATCH */
#endif /* CONFIG_KALLSYMS */
static void cfi_init(struct module *mod)
--
2.40.1
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH 5.15 2/2] tracing/kprobes: Fix symbol counting logic by looking at modules as well
2024-01-11 21:43 [PATCH 5.15 0/2] tracing/kprobes: Fix symbol counting logic by looking at modules as well Markus Boehme
2024-01-11 21:43 ` [PATCH 5.15 1/2] kallsyms: Make module_kallsyms_on_each_symbol generally available Markus Boehme
@ 2024-01-11 21:43 ` Markus Boehme
2024-01-13 9:32 ` [PATCH 5.15 0/2] " Greg KH
2 siblings, 0 replies; 4+ messages in thread
From: Markus Boehme @ 2024-01-11 21:43 UTC (permalink / raw)
To: stable
Cc: Andrii Nakryiko, Francis Laniel, Masami Hiramatsu, Steven Rostedt,
Song Liu, Markus Boehme
From: Andrii Nakryiko <andrii@kernel.org>
commit 926fe783c8a64b33997fec405cf1af3e61aed441 upstream.
Recent changes to count number of matching symbols when creating
a kprobe event failed to take into account kernel modules. As such, it
breaks kprobes on kernel module symbols, by assuming there is no match.
Fix this my calling module_kallsyms_on_each_symbol() in addition to
kallsyms_on_each_match_symbol() to perform a proper counting.
Link: https://lore.kernel.org/all/20231027233126.2073148-1-andrii@kernel.org/
Cc: Francis Laniel <flaniel@linux.microsoft.com>
Cc: stable@vger.kernel.org
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Fixes: b022f0c7e404 ("tracing/kprobes: Return EADDRNOTAVAIL when func matches several symbols")
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Song Liu <song@kernel.org>
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Signed-off-by: Markus Boehme <markubo@amazon.com>
---
kernel/trace/trace_kprobe.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
index 1c565db2de7b..21aef22a8489 100644
--- a/kernel/trace/trace_kprobe.c
+++ b/kernel/trace/trace_kprobe.c
@@ -735,6 +735,8 @@ static unsigned int number_of_same_symbols(char *func_name)
kallsyms_on_each_symbol(count_symbols, &args);
+ module_kallsyms_on_each_symbol(count_symbols, &args);
+
return args.count;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 4+ messages in thread