On Tue, Apr 7, 2026 at 9:52 AM Andrey Grodzovsky <[email protected]> wrote: > > When an unqualified kprobe target exists in both vmlinux and a loaded > module, number_of_same_symbols() returns a count greater than 1, > causing kprobe attachment to fail with -EADDRNOTAVAIL even though the > vmlinux symbol is unambiguous. > > When no module qualifier is given and the symbol is found in vmlinux, > return the vmlinux-only count without scanning loaded modules. This > preserves the existing behavior for all other cases: > - Symbol only in a module: vmlinux count is 0, falls through to module > scan as before. > - Symbol qualified with MOD:SYM: mod != NULL, unchanged path. > - Symbol ambiguous within vmlinux itself: count > 1 is returned as-is. > > Fixes: 926fe783c8a6 ("tracing/kprobes: Fix symbol counting logic by looking > at modules as well") > Fixes: 9d8616034f16 ("tracing/kprobes: Add symbol counting check when module > loads") > Suggested-by: Ihor Solodrai <[email protected]> > Acked-by: Jiri Olsa <[email protected]> > Signed-off-by: Andrey Grodzovsky <[email protected]> > --- > kernel/trace/trace_kprobe.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c > index a5dbb72528e0..99c41ea8b6d7 100644 > --- a/kernel/trace/trace_kprobe.c > +++ b/kernel/trace/trace_kprobe.c > @@ -765,6 +765,13 @@ static unsigned int number_of_same_symbols(const char > *mod, const char *func_nam > if (!mod) > kallsyms_on_each_match_symbol(count_symbols, func_name, > &ctx.count); > > + /* If the symbol is found in vmlinux, use vmlinux resolution only. > + * This prevents module symbols from shadowing vmlinux symbols > + * and causing -EADDRNOTAVAIL for unqualified kprobe targets. > + */
Please do not use networking style comments in the new code. Same applies to selftests. pw-bot: cr
