[PATCH 0/5] tracing/probes: Clean up and refactor argument parser
From: "Masami Hiramatsu (Google)" <mhiramat@kernel.org>
Date: 2026-07-13 07:27:44
Also in:
linux-kselftest, lkml
Hi, This is the 2nd version of the series which refactors and cleans up the fetcharg parser in the trace_probe. The previous version is here: https://lore.kernel.org/all/178386876526.3174487.5142283230157728964.stgit@devnote2/ (local) The main goals are to improve code readability, prevent kernel stack overflow by eliminating recursive function calls, and extend the argument string length limit to support complex BTF typecast expressions. In this version, I fixed the double error log issue in [1/5], make MAX_ARGSTR_LEN to 255 [4/5] and update patch description for clarify this change updates the behavior (not a cleanup) and make TRACEPROBE_MAX_NESTED_LEVEL to 8 (also update testcases)[5/5]. Patches: - Patch 1: Decomposes parse_probe_vars() into smaller, dedicated helper functions for parsing specific variable types ($retval, $stack, etc.). - Patch 2: Decomposes parse_probe_arg() into static helper subroutines for handling registers, memory/symbols, and immediates. - Patch 3: Alphabetizes the ERRORS macros list in trace_probe.h to improve readability. - Patch 4: Extends MAX_ARGSTR_LEN from 63 to 255 for long BTF cast/dereference arguments, and introduces MAX_COMMON_HEAD_LEN to prevent regression on match head commands. - Patch 5: Eliminates recursion in parse_probe_arg() using a loop and a parse state stack integrated into traceprobe_parse_context. It also raises the nesting limit to 8 and updates the selftest scripts. Thanks, --- Masami Hiramatsu (5): tracing/probes: Refactor parse_probe_vars() tracing/probes: Refactor parse_probe_arg() tracing/probes: Sort ERRORS list in trace_probe.h alphabetically tracing/probes: Extend max length of argument string tracing/probes: Eliminate recursion in parse_probe_arg() kernel/trace/trace_fprobe.c | 2 kernel/trace/trace_kprobe.c | 2 kernel/trace/trace_probe.c | 829 ++++++++++++-------- kernel/trace/trace_probe.h | 196 +++-- kernel/trace/trace_uprobe.c | 2 .../ftrace/test.d/dynevent/fprobe_syntax_errors.tc | 6 .../ftrace/test.d/dynevent/tprobe_syntax_errors.tc | 4 .../ftrace/test.d/kprobe/kprobe_syntax_errors.tc | 6 8 files changed, 621 insertions(+), 426 deletions(-) -- Masami Hiramatsu (Google) [off-list ref]