已开启
Fix PT_REGS macro definition being overwritten in sw_64 #223
zhangzikang创建于 7月1日
Fix PT_REGS macro definition being overwritten in sw_64 #223
已开启
zhangzikang创建于 7月1日
共 2 个文件变更+100-1
@@ -0,0 +1,95 @@
1+From e7f1afd947de88be91a85f51e59cd66255028d29 Mon Sep 17 00:00:00 2001
2+From: zhangzikang <zhangzikang@kylinos.cn>
3+Date: Sun, 26 Apr 2026 00:39:24 +0800
4+Subject: [PATCH] Fix PT_REGS macro definition being overwritten in sw_64
5+ 
6+---
7+ src/bpf_tracing.h | 58 +++++++++++++++++++++++------------------------
8+ 1 file changed, 29 insertions(+), 29 deletions(-)
9+ 
10+diff --git a/src/bpf_tracing.h b/src/bpf_tracing.h
11+index 7f75b95..f9d4331 100644
12+--- a/src/bpf_tracing.h
13++++ b/src/bpf_tracing.h
14+@@ -448,35 +448,6 @@ struct pt_regs___arm64 {
15+ #define __PT_SP_REG regs[3]
16+ #define __PT_IP_REG csr_era
17+
18+-#elif defined(bpf_target_sw64)
19+-
20+-/* sw64 provides struct user_pt_regs instead of struct pt_regs to userspace */
21+-struct pt_regs;
22+-#define PT_REGS_SW64 const volatile struct user_pt_regs
23+-#define PT_REGS_PARM1(x) (((PT_REGS_SW64 *)(x))->regs[16])
24+-#define PT_REGS_PARM2(x) (((PT_REGS_SW64 *)(x))->regs[17])
25+-#define PT_REGS_PARM3(x) (((PT_REGS_SW64 *)(x))->regs[18])
26+-#define PT_REGS_PARM4(x) (((PT_REGS_SW64 *)(x))->regs[19])
27+-#define PT_REGS_PARM5(x) (((PT_REGS_SW64 *)(x))->regs[20])
28+-#define PT_REGS_RET(x) (((PT_REGS_SW64 *)(x))->regs[26])
29+-/* Works only with CONFIG_FRAME_POINTER */
30+-#define PT_REGS_FP(x) (((PT_REGS_SW64 *)(x))->regs[15])
31+-#define PT_REGS_RC(x) (((PT_REGS_SW64 *)(x))->regs[0])
32+-#define PT_REGS_SP(x) (((PT_REGS_SW64 *)(x))->regs[30])
33+-#define PT_REGS_IP(x) (((PT_REGS_SW64 *)(x))->pc)
34+-
35+-#define PT_REGS_PARM1_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[16])
36+-#define PT_REGS_PARM2_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[17])
37+-#define PT_REGS_PARM3_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[18])
38+-#define PT_REGS_PARM4_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[19])
39+-#define PT_REGS_PARM5_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[20])
40+-#define PT_REGS_RET_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[26])
41+-#define PT_REGS_FP_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[15])
42+-#define PT_REGS_RC_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[0])
43+-#define PT_REGS_SP_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[30])
44+-#define PT_REGS_IP_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), pc)
45+-
46+-
47+ #endif
48+
49+ #if defined(bpf_target_defined)
50+@@ -518,6 +489,34 @@ struct pt_regs;
51+ #define __PT_PARM7_SYSCALL_REG __unsupported__
52+ #endif
53+
54++#if defined(bpf_target_sw64)
55++/* sw64 provides struct user_pt_regs instead of struct pt_regs to userspace */
56++struct pt_regs;
57++#define PT_REGS_SW64 const volatile struct user_pt_regs
58++#define PT_REGS_PARM1(x) (((PT_REGS_SW64 *)(x))->regs[16])
59++#define PT_REGS_PARM2(x) (((PT_REGS_SW64 *)(x))->regs[17])
60++#define PT_REGS_PARM3(x) (((PT_REGS_SW64 *)(x))->regs[18])
61++#define PT_REGS_PARM4(x) (((PT_REGS_SW64 *)(x))->regs[19])
62++#define PT_REGS_PARM5(x) (((PT_REGS_SW64 *)(x))->regs[20])
63++#define PT_REGS_RET(x) (((PT_REGS_SW64 *)(x))->regs[26])
64++/* Works only with CONFIG_FRAME_POINTER */
65++#define PT_REGS_FP(x) (((PT_REGS_SW64 *)(x))->regs[15])
66++#define PT_REGS_RC(x) (((PT_REGS_SW64 *)(x))->regs[0])
67++#define PT_REGS_SP(x) (((PT_REGS_SW64 *)(x))->regs[30])
68++#define PT_REGS_IP(x) (((PT_REGS_SW64 *)(x))->pc)
69++
70++#define PT_REGS_PARM1_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[16])
71++#define PT_REGS_PARM2_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[17])
72++#define PT_REGS_PARM3_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[18])
73++#define PT_REGS_PARM4_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[19])
74++#define PT_REGS_PARM5_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[20])
75++#define PT_REGS_RET_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[26])
76++#define PT_REGS_FP_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[15])
77++#define PT_REGS_RC_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[0])
78++#define PT_REGS_SP_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[30])
79++#define PT_REGS_IP_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), pc)
80++
81++#else
82+ #define PT_REGS_PARM1(x) (__PT_REGS_CAST(x)->__PT_PARM1_REG)
83+ #define PT_REGS_PARM2(x) (__PT_REGS_CAST(x)->__PT_PARM2_REG)
84+ #define PT_REGS_PARM3(x) (__PT_REGS_CAST(x)->__PT_PARM3_REG)
85+@@ -545,6 +544,7 @@ struct pt_regs;
86+ #define PT_REGS_RC_CORE(x) BPF_CORE_READ(__PT_REGS_CAST(x), __PT_RC_REG)
87+ #define PT_REGS_SP_CORE(x) BPF_CORE_READ(__PT_REGS_CAST(x), __PT_SP_REG)
88+ #define PT_REGS_IP_CORE(x) BPF_CORE_READ(__PT_REGS_CAST(x), __PT_IP_REG)
89++#endif
90+
91+ #if defined(bpf_target_powerpc)
92+
93+--
94+2.43.0
95+ 
@@ -4,7 +4,7 @@
4 4 
5Name: %{githubname}5Name: %{githubname}
6Version: %{githubver}6Version: %{githubver}
7-Release: 137+Release: 14
8Summary: Libbpf library8Summary: Libbpf library
9 9 
10License: LGPLv2 or BSD10License: LGPLv2 or BSD
@@ -35,6 +35,7 @@ Patch0018: backport-libbpf-fix-LDX_STX_ST-CO-RE-relocation-size-adjustment-
35Patch0019: backport-libbpf-Fix-hypothetical-STT_SECTION-extern-NULL-deref-case.patch35Patch0019: backport-libbpf-Fix-hypothetical-STT_SECTION-extern-NULL-deref-case.patch
36Patch0020: backport-libbpf-Adaption-for-sched-type-eBPF-program.patch36Patch0020: backport-libbpf-Adaption-for-sched-type-eBPF-program.patch
37Patch0021: backport-libbpf-Fix-buffer-overflow-in-bpf_object__init_prog.patch37Patch0021: backport-libbpf-Fix-buffer-overflow-in-bpf_object__init_prog.patch
38+Patch0022: Fix-PT_REGS-macro-definition-being-overwritten-in-sw_64.patch
38 39 
39# This package supersedes libbpf from kernel-tools,40# This package supersedes libbpf from kernel-tools,
40# which has default Epoch: 0. By having Epoch: 141# which has default Epoch: 0. By having Epoch: 1
@@ -87,6 +88,9 @@ developing applications that use %{name}
87%{_libdir}/libbpf.a88%{_libdir}/libbpf.a
88 89 
89%changelog90%changelog
91+* Wed Jul 01 2026 zhangzikang <zhangzikang@kylinos.cn> - 2:1.2.2-14
92+- Fix PT_REGS macro definition being overwritten in sw_64
93+ 
90* Mon Jun 15 2026 houxu <houxu5@h-partners.com> - 2:1.2.2-1394* Mon Jun 15 2026 houxu <houxu5@h-partners.com> - 2:1.2.2-13
91- revert 0001-libbpf-1.2.2-fix-cve-2025-29481.patch95- revert 0001-libbpf-1.2.2-fix-cve-2025-29481.patch
92 libbpf: Fix buffer overflow in bpf_object__init_prog96 libbpf: Fix buffer overflow in bpf_object__init_prog