From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E5DD43CA486; Wed, 24 Jun 2026 14:41:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782312112; cv=none; b=W6n1ym9hs1yurocLsAO8o/VWBmqMuFXhCxfpcE0N19NATQc59Oe6l3XnozNN+ZJINbVRXz9lYSF4gUhUMqv0LRr5j5K19wIlPq2WViZGuYo/ph4U/1ZVx+fycimG8y1p6bG4bVKGItMKVpx7O5SKPdWUo989q8GM4TnWkA4w/hk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782312112; c=relaxed/simple; bh=ILB/ElfIWa9u0xQ12aAYqyj8anSCHxMnZsNP9BRN1oE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=XU+pnXDCcp9q4wF1A2IEEFcXzHlUROpp3v2xb2G+RZnkzb2TjkLSmxGrPvMnwYlKO5pjGtJ0K/ZErZsrryHG84DTNX1p5SzM30/jqAmQccLLxS3orE0BX1Su19UURFEytMD+yAWWUvfZ/W8BRmkjBztxS/whIA0pm+e9ycpN9IE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=La639dCx; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="La639dCx" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E98C81F000E9; Wed, 24 Jun 2026 14:41:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1782312110; bh=zA1ny7mz86qD9VEgfTKY9l9S9cY7unn92daWUtN0ORY=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=La639dCxhqfASTQUkgnoIZuoYGcv0Cotqto36Qwtzfy3PjSIO7XSvlFnLhzeTNvM7 SEWtXHlCLRHJO58po692UhOBF/f7jCWsXXIXTvXeSXqJ0zNICXcZLQGNjB6X2cqixF kwRA8o7cee7xX/vDM4NG/+E5kyTHeWjy2luExXkTYUtexqgijWeWIxq080/oXo3AAf G23dBpInF25CiyNrLAAVGyDVDznbwSpdbFtJ0WTrJpCkZ6ryZVOK8DUtwpSA0ao0EQ IfdIIChQ8F5KsfgjpdJfZLdhFJPh4pMMv/H5ktty/CD8dUvAdELuVly5Sa0unZP8GA qytFKcGGDX7Tw== From: "Masami Hiramatsu (Google)" To: Steven Rostedt , Mathieu Desnoyers Cc: Jonathan Corbet , Shuah Khan , Masami Hiramatsu , linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: [PATCH v8 02/10] tracing/probes: Allow eprobe to use variable without $ prefix Date: Wed, 24 Jun 2026 23:41:47 +0900 Message-ID: <178231210706.732967.16859916754335270082.stgit@devnote2> X-Mailer: git-send-email 2.43.0 In-Reply-To: <178231208703.732967.1160700962651040729.stgit@devnote2> References: <178231208703.732967.1160700962651040729.stgit@devnote2> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit From: Masami Hiramatsu (Google) The commit 69efd863a785 ("tracing/eprobes: Allow use of BTF names to dereference pointers") allows eprobe to use event field without "$" prefix when it is used with typecast, it is natual to allow it without typecast. Signed-off-by: Masami Hiramatsu (Google) --- Changes in v8: - Newly added. --- kernel/trace/trace_probe.c | 12 +++++++++++- kernel/trace/trace_probe.h | 1 + .../test.d/dynevent/eprobes_syntax_errors.tc | 3 +-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/kernel/trace/trace_probe.c b/kernel/trace/trace_probe.c index 0da7c0b53ba7..2ce7d62471cb 100644 --- a/kernel/trace/trace_probe.c +++ b/kernel/trace/trace_probe.c @@ -1341,7 +1341,17 @@ parse_probe_arg(char *arg, const struct fetch_type *type, ret = handle_typecast(arg, pcode, end, ctx); break; default: - if (isalpha(arg[0]) || arg[0] == '_') { /* BTF variable */ + if (isalpha(arg[0]) || arg[0] == '_') { + /* BTF variable or event field*/ + if (ctx->flags & TPARG_FL_TEVENT) { + ret = parse_trace_event(arg, *pcode, ctx); + if (ret < 0) { + trace_probe_log_err(ctx->offset, + NO_EVENT_FIELD); + return -EINVAL; + } + break; + } if (!tparg_is_function_entry(ctx->flags) && !tparg_is_function_return(ctx->flags)) { trace_probe_log_err(ctx->offset, NOSUP_BTFARG); diff --git a/kernel/trace/trace_probe.h b/kernel/trace/trace_probe.h index 40b53b5b58a9..2e0d8384ee5c 100644 --- a/kernel/trace/trace_probe.h +++ b/kernel/trace/trace_probe.h @@ -559,6 +559,7 @@ extern int traceprobe_define_arg_fields(struct trace_event_call *event_call, C(NO_PTR_STRCT, "This is not a pointer to union/structure."), \ C(NOSUP_DAT_ARG, "Non pointer structure/union argument is not supported."),\ C(BAD_HYPHEN, "Failed to parse single hyphen. Forgot '>'?"), \ + C(NO_EVENT_FIELD, "This event field is not found."), \ C(NO_BTF_FIELD, "This field is not found."), \ C(BAD_BTF_TID, "Failed to get BTF type info."),\ C(BAD_TYPE4STR, "This type does not fit for string."),\ diff --git a/tools/testing/selftests/ftrace/test.d/dynevent/eprobes_syntax_errors.tc b/tools/testing/selftests/ftrace/test.d/dynevent/eprobes_syntax_errors.tc index 2a680c086047..0e65e787e426 100644 --- a/tools/testing/selftests/ftrace/test.d/dynevent/eprobes_syntax_errors.tc +++ b/tools/testing/selftests/ftrace/test.d/dynevent/eprobes_syntax_errors.tc @@ -10,7 +10,7 @@ check_error() { # command-with-error-pos-by-^ check_error 'e ^a.' # NO_EVENT_INFO check_error 'e ^.b' # NO_EVENT_INFO check_error 'e ^a.b' # BAD_ATTACH_EVENT -check_error 'e syscalls/sys_enter_openat ^foo' # BAD_ATTACH_ARG +check_error 'e syscalls/sys_enter_openat ^foo' # NO_EVENT_FIELD check_error 'e:^/bar syscalls/sys_enter_openat' # NO_GROUP_NAME check_error 'e:^12345678901234567890123456789012345678901234567890123456789012345/bar syscalls/sys_enter_openat' # GROUP_TOO_LONG @@ -19,7 +19,6 @@ check_error 'e:^ syscalls/sys_enter_openat' # NO_EVENT_NAME check_error 'e:foo/^12345678901234567890123456789012345678901234567890123456789012345 syscalls/sys_enter_openat' # EVENT_TOO_LONG check_error 'e:foo/^bar.1 syscalls/sys_enter_openat' # BAD_EVENT_NAME -check_error 'e:foo/bar syscalls/sys_enter_openat arg=^dfd' # BAD_FETCH_ARG check_error 'e:foo/bar syscalls/sys_enter_openat arg=^$foo' # BAD_ATTACH_ARG if grep -q '\..*\[if \]' README; then