From ddbc20c0770fe1b9eba3bd432e03bec971c185ac Mon Sep 17 00:00:00 2001 From: Aryan Bakliwal Date: Wed, 20 Aug 2025 09:55:34 +0530 Subject: [PATCH] fix(tracefs): allow '-' in tracepoint group names Signed-off-by: Aryan Bakliwal --- internal/tracefs/kprobe.go | 10 +++++----- internal/tracefs/perf_event_test.go | 3 ++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/internal/tracefs/kprobe.go b/internal/tracefs/kprobe.go index 7f7b3cba5..4a9353a5a 100644 --- a/internal/tracefs/kprobe.go +++ b/internal/tracefs/kprobe.go @@ -72,11 +72,11 @@ func RandomGroup(prefix string) (string, error) { } // validIdentifier implements the equivalent of a regex match -// against "^[a-zA-Z_][0-9a-zA-Z_]*$". +// against "^[a-zA-Z_][0-9a-zA-Z_-]*$". // -// Trace event groups, names and kernel symbols must adhere to this set -// of characters. Non-empty, first character must not be a number, all -// characters must be alphanumeric or underscore. +// Trace event groups, names and kernel symbols must adhere to this set of +// characters. Non-empty, first character must not be a number or hyphen, all +// characters must be alphanumeric, underscore or hyphen. func validIdentifier(s string) bool { if len(s) < 1 { return false @@ -86,7 +86,7 @@ func validIdentifier(s string) bool { case c >= 'a' && c <= 'z': case c >= 'A' && c <= 'Z': case c == '_': - case i > 0 && c >= '0' && c <= '9': + case i > 0 && (c == '-' || c >= '0' && c <= '9'): default: return false diff --git a/internal/tracefs/perf_event_test.go b/internal/tracefs/perf_event_test.go index 1164ef761..b59478c7c 100644 --- a/internal/tracefs/perf_event_test.go +++ b/internal/tracefs/perf_event_test.go @@ -42,8 +42,9 @@ func TestValidIdentifier(t *testing.T) { {"underscore first", "__x64_syscall", false}, {"contains number", "bpf_trace_run1", false}, {"underscore", "_", false}, - {"contains dash", "-EINVAL", true}, + {"leading dash", "-EINVAL", true}, {"contains number", "all0wed", false}, + {"contains dash", "trace-group", false}, } for _, tt := range tests {