From nobody Wed Sep 30 16:20:05 2026 Received: from fhigh-b3-smtp.messagingengine.com (fhigh-b3-smtp.messagingengine.com [202.12.124.154]) (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 906B74B04BB for ; Fri, 7 Aug 2026 00:47:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786063661; cv=none; b=WJUOegCVCH8dlloBGU2gagOEcqRw/mtu3liEEreLSrcYthOFnjKADIZmi3yvdGRz1qdMFD5lPlH0KHkQYuJs7ZrSE5Tap2Vtb+Q+uQX5OJSKMkjKZIwAIuaXDruhV0W8xmi6w+WSB6shU9g8Xuc/ixuVGY24E3kSqXgwseb6PGo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786063661; c=relaxed/simple; bh=x3KWCPyXI1igDq2dcb1oRNE7pLmFZQPl99ijGL4oOsM=; h=Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type; b=tAanlkRifXJlTZnZ6IY5Tmr4kvmmuqHym2ki7gA7muOyJ/3rGFADNrkM7iD/gN0qhRc7WXFZO2PuG3Jt/CXaigsKbmhy2ucZ0Lk+gWwilG8FIkdLgumxYYwl7HUs3cRty+Md9mo1GtNYQiPT1Okt0Rki+URCpQHjc8sqzzSavTc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rostedt.org; spf=pass smtp.mailfrom=rostedt.org; dkim=pass (2048-bit key) header.d=rostedt.org header.i=@rostedt.org header.b=EenxmDdB; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=CXtpdt5j; arc=none smtp.client-ip=202.12.124.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rostedt.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rostedt.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rostedt.org header.i=@rostedt.org header.b="EenxmDdB"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="CXtpdt5j" Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44]) by mailfhigh.stl.internal (Postfix) with ESMTP id CB2797A005C; Thu, 6 Aug 2026 20:47:38 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-04.internal (MEProxy); Thu, 06 Aug 2026 20:47:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rostedt.org; h= cc:cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:message-id:mime-version:reply-to :subject:subject:to:to; s=fm1; t=1786063658; x=1786150058; bh=oL M/DA6goUVJnLnzLqiOb1JRn7EMxo6dfMQ0BozqSDg=; b=EenxmDdBvJ3rmG6X3f 3Ed9uPVhbacmCfdQXNPFi77n0A/ULvC28w6qiOjN/6X6f9emAOUox7vDB6t5ZPza 8aF72V+D6eXS18bGubUJXaKzRRFEDO5heLDRLnIdDo11SnPPAQGxgmO2WMeJD9YJ 9GaFhDhHKesKv19MzUTf7UcDRNYN1jaGjW4AN0d9Tw1OLoLPUoxjvufd376arJNl 6in6yZI0VFFynYuldt4tT7/OytB93gsnszz4/312O0uwnFzSVryOdXAN14Fp9yj8 FNFZiAvrgwR1Vo9xKZJoQklrCuLoOwSsUqcQ/JKwUsSUl3sUixuawFEQBoV+xsGt 6Xkw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:message-id:mime-version:reply-to:subject :subject:to:to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm3; t=1786063658; x=1786150058; bh=oLM/DA6goUVJnLnzLqiOb1JRn7EM xo6dfMQ0BozqSDg=; b=CXtpdt5jhokWW9QT02OxSJT5vOGXez8FlCTk44rvsIg0 2YywQHeXn3uL/SIrd7N9eivvDS3wUtFBAUyaOLzv+fFh1Iae6+3bw3RlR30Lyb2i Em4pXjlRCBrECP1KPb82HTONVbmbSdVkWMEmatKpWm+VZ3MizR+IoFDMeg2631Nk 7vwVQAMppX8R4glISiiq7p+HoMbMMcC0ZhwFFxneUMthJrS8IxFC5W+1w3KU4qCd 4HL9OSPRMWpfTj8e2+GtBfbtxLmfahJv9TDCwXGnHf/+6+RynNu1Hguh9YW8ePz8 9loDFvvw7eW39I674NPCHh9A0GDBemCRUvRRFZzlTA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTFgvzA/s2a3HohwBqLnlD1ZEgJB7t/9C/FXd5W08Tm4MJQmVO8Py137zRoz4b1Mdi oaoeIh6QqDbzM+2e5DpktJ3ax3D/IOgGMc3lGx2LshT4EnuiL3+L5EbZNMxKouGC8DABjw bkWPKtSN2q97OxUVQ4I41F/KcRgOuMs9PIhQTq9oVi54I/yNNwJzxPelfK9ZthfQWHCQTq DpmEx0wSjL7Ax8aq38/r0NRczuq2uH3+fFSQsabjss3yZIwZ5sfbmJ4GLwUykOtBSIwGbH ikHG+vjDuhxThPMN2cmnUc9n16Y5JPzhBqKLgHgXc1EEiQ8tlxbpjpMEWTOnFkcWbznXA4 WMyMgCTBX3lfQMtbOUWBOUnsWhG5lhy0HEyPqG9G8iEDb+PHRJ8FHGbIk7AxuwYvadLidi Wpnw1MjO9QQcHLLJt5BJSsPOChTnv5oE756QxZ3N9VvlMg9U2+d385qZhGt98AN/Rq7eaK FMeVMnAv2aYPdNkh9VI1kPDmcLtsE3xpCq9BosaKFnpn0aZ6ewDQxkTxIY8rrR99E90WNU Pw2NMsXEZBKjQ2ZJiC9CgJ1AkMWOsdMcwM0etMTLNsHxFBwhtLL0abTQZpb+DF7LT1juf1 puzidHqUjTocYqzBudAcR/YeYc3f4FEM5w16WsYneAX/oXyHPjYXkbZmgkGw X-ME-Proxy: Feedback-ID: id06e481b:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 6 Aug 2026 20:47:38 -0400 (EDT) Date: Thu, 6 Aug 2026 20:47:38 -0400 From: Steven Rostedt To: LKML Cc: Masami Hiramatsu , Mathieu Desnoyers , Mykyta Yatsenko Subject: [for-next][PATCH] tracing: Make per-template BTF id lists file-local Message-ID: <20260806204738.59093aaf@gandalf.local.home> X-Mailer: Claws Mail 3.20.0git84 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git trace/for-next Head SHA1: d5b201ed4feb7a11da242a97669424efeb724031 Mykyta Yatsenko (1): tracing: Make per-template BTF id lists file-local ---- include/trace/trace_events.h | 7 +++---- kernel/trace/trace_syscalls.c | 27 ++++++++++++++------------- 2 files changed, 17 insertions(+), 17 deletions(-) --------------------------- commit d5b201ed4feb7a11da242a97669424efeb724031 Author: Mykyta Yatsenko Date: Thu Jul 30 17:17:39 2026 -0700 tracing: Make per-template BTF id lists file-local =20 DECLARE_EVENT_CLASS emitted __bpf_trace_btf_ids_ through BTF_ID_LIST_GLOBAL, i.e. a global symbol named after the event class. The class name is not unique across the kernel, so the symbol multiply-defines whenever two translation units instantiate the same class. =20 Switch to the file-local BTF_ID_LIST: the list is reached only through the event_class_.btf_ids pointer, initialised in the same unit, so tracefs readers never reference the symbol by name and resolve_btfids still fills the now-local .BTF_ids entries. =20 The handcrafted syscall classes are the one cross-unit consumer: give them their own local BTF_ID_LIST rather than importing the generated sys_{enter,exit} lists. =20 Link: https://patch.msgid.link/20260730-b4-fix_btf_tracefs-v2-1-6b66da8= dc103@meta.com Fixes: eadc0725ab8d3 ("tracing: Expose tracepoint BTF ids via tracefs") Reported-by: Mark Brown Closes: https://lore.kernel.org/all/ff58b01c-3f5e-4d55-be82-609d2faaf12= e@sirena.org.uk/ Signed-off-by: Mykyta Yatsenko Acked-by: Andrii Nakryiko Signed-off-by: Steven Rostedt diff --git a/include/trace/trace_events.h b/include/trace/trace_events.h index 09ad57ac4b73..93011f800d0f 100644 --- a/include/trace/trace_events.h +++ b/include/trace/trace_events.h @@ -398,7 +398,7 @@ static inline notrace int trace_event_get_offsets_##cal= l( \ #define _TRACE_PERF_INIT(call) #endif /* CONFIG_PERF_EVENTS */ =20 -#ifdef CONFIG_BPF_EVENTS +#if defined(CONFIG_BPF_EVENTS) && defined(CONFIG_DEBUG_INFO_BTF) /* * Per-template BTF id list, populated at link time by resolve_btfids: * [0] FUNC __bpf_trace_ (the BPF dispatcher) @@ -406,8 +406,7 @@ static inline notrace int trace_event_get_offsets_##cal= l( \ * Exposed via the events///btf_ids tracefs file. */ #define _TRACE_BTF_IDS_DECLARE(call) \ - extern u32 __bpf_trace_btf_ids_##call[]; \ - BTF_ID_LIST_GLOBAL(__bpf_trace_btf_ids_##call, 2) \ + BTF_ID_LIST(__bpf_trace_btf_ids_##call) \ BTF_ID(func, __bpf_trace_##call) \ BTF_ID(struct, trace_event_raw_##call) =20 @@ -417,7 +416,7 @@ static inline notrace int trace_event_get_offsets_##cal= l( \ #else #define _TRACE_BTF_IDS_DECLARE(call) #define _TRACE_BTF_IDS_INIT(call) -#endif /* CONFIG_BPF_EVENTS */ +#endif /* CONFIG_BPF_EVENTS && CONFIG_DEBUG_INFO_BTF */ =20 #include "stages/stage6_event_callback.h" =20 diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c index 48ef1a93e576..e35744049e3f 100644 --- a/kernel/trace/trace_syscalls.c +++ b/kernel/trace/trace_syscalls.c @@ -9,6 +9,7 @@ #include #include #include +#include #include =20 #include "trace_output.h" @@ -1303,15 +1304,15 @@ struct trace_event_functions exit_syscall_print_fun= cs =3D { .trace =3D print_syscall_exit, }; =20 -#ifdef CONFIG_BPF_EVENTS -/* - * BTF id lists generated by DECLARE_EVENT_CLASS for the sys_enter and - * sys_exit tracepoints. The auto-generated event_class_sys_{enter,exit} - * is unused (per-syscall events share the handcrafted classes below), - * but the id lists themselves are global and reusable. - */ -extern u32 __bpf_trace_btf_ids_sys_enter[]; -extern u32 __bpf_trace_btf_ids_sys_exit[]; +#if defined(CONFIG_BPF_EVENTS) && defined(CONFIG_DEBUG_INFO_BTF) +/* BTF id lists for the shared sys_enter/sys_exit dispatcher tracepoints. = */ +BTF_ID_LIST(syscall_enter_btf_ids) +BTF_ID(func, __bpf_trace_sys_enter) +BTF_ID(struct, trace_event_raw_sys_enter) + +BTF_ID_LIST(syscall_exit_btf_ids) +BTF_ID(func, __bpf_trace_sys_exit) +BTF_ID(struct, trace_event_raw_sys_exit) #endif =20 struct trace_event_class __refdata event_class_syscall_enter =3D { @@ -1320,8 +1321,8 @@ struct trace_event_class __refdata event_class_syscal= l_enter =3D { .fields_array =3D syscall_enter_fields_array, .get_fields =3D syscall_get_enter_fields, .raw_init =3D init_syscall_trace, -#ifdef CONFIG_BPF_EVENTS - .btf_ids =3D __bpf_trace_btf_ids_sys_enter, +#if defined(CONFIG_BPF_EVENTS) && defined(CONFIG_DEBUG_INFO_BTF) + .btf_ids =3D syscall_enter_btf_ids, #endif }; =20 @@ -1335,8 +1336,8 @@ struct trace_event_class __refdata event_class_syscal= l_exit =3D { }, .fields =3D LIST_HEAD_INIT(event_class_syscall_exit.fields), .raw_init =3D init_syscall_trace, -#ifdef CONFIG_BPF_EVENTS - .btf_ids =3D __bpf_trace_btf_ids_sys_exit, +#if defined(CONFIG_BPF_EVENTS) && defined(CONFIG_DEBUG_INFO_BTF) + .btf_ids =3D syscall_exit_btf_ids, #endif };