From 78ea29a9e9d3de9a8a1e6df63e97a24feab7635d Mon Sep 17 00:00:00 2001 From: zhang-mingyi66 Date: Wed, 25 Sep 2024 15:49:49 +0800 Subject: [PATCH] backport patches from upstream: backport-libbpf-Avoid-uninitialized-value-in-BPF_CORE_READ_BI.patch --- ...nitialized-value-in-BPF_CORE_READ_BI.patch | 56 +++++++++++++++++++ libbpf.spec | 7 ++- 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 backport-libbpf-Avoid-uninitialized-value-in-BPF_CORE_READ_BI.patch diff --git a/backport-libbpf-Avoid-uninitialized-value-in-BPF_CORE_READ_BI.patch b/backport-libbpf-Avoid-uninitialized-value-in-BPF_CORE_READ_BI.patch new file mode 100644 index 0000000..5bda8ab --- /dev/null +++ b/backport-libbpf-Avoid-uninitialized-value-in-BPF_CORE_READ_BI.patch @@ -0,0 +1,56 @@ +From 3827aa514cba7db16b81236712a46e8b70260fcd Mon Sep 17 00:00:00 2001 +From: "Jose E. Marchesi" +Date: Wed, 8 May 2024 12:13:13 +0200 +Subject: [PATCH] bpf: Avoid uninitialized value in BPF_CORE_READ_BITFIELD + +[Changes from V1: + - Use a default branch in the switch statement to initialize `val'.] + +GCC warns that `val' may be used uninitialized in the +BPF_CRE_READ_BITFIELD macro, defined in bpf_core_read.h as: + + [...] + unsigned long long val; \ + [...] \ + switch (__CORE_RELO(s, field, BYTE_SIZE)) { \ + case 1: val = *(const unsigned char *)p; break; \ + case 2: val = *(const unsigned short *)p; break; \ + case 4: val = *(const unsigned int *)p; break; \ + case 8: val = *(const unsigned long long *)p; break; \ + } \ + [...] + val; \ + } \ + +This patch adds a default entry in the switch statement that sets +`val' to zero in order to avoid the warning, and random values to be +used in case __builtin_preserve_field_info returns unexpected values +for BPF_FIELD_BYTE_SIZE. + +Tested in bpf-next master. +No regressions. + +Signed-off-by: Jose E. Marchesi +Signed-off-by: Andrii Nakryiko +Link: https://lore.kernel.org/bpf/20240508101313.16662-1-jose.marchesi@oracle.com + +Conflict: NA +Reference:https://github.com/libbpf/libbpf/commit/3827aa514cba7db16b81236712a46e8b70260fcd +--- + src/bpf_core_read.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/bpf_core_read.h b/src/bpf_core_read.h +index b5c7ce5c2..c0e13cdf9 100644 +--- a/src/bpf_core_read.h ++++ b/src/bpf_core_read.h +@@ -104,6 +104,7 @@ enum bpf_enum_value_kind { + case 2: val = *(const unsigned short *)p; break; \ + case 4: val = *(const unsigned int *)p; break; \ + case 8: val = *(const unsigned long long *)p; break; \ ++ default: val = 0; break; \ + } \ + val <<= __CORE_RELO(s, field, LSHIFT_U64); \ + if (__CORE_RELO(s, field, SIGNED)) \ + + diff --git a/libbpf.spec b/libbpf.spec index dde81ba..351a69d 100644 --- a/libbpf.spec +++ b/libbpf.spec @@ -4,7 +4,7 @@ Name: %{githubname} Version: %{githubver} -Release: 3 +Release: 4 Summary: Libbpf library License: LGPLv2 or BSD @@ -18,6 +18,7 @@ Patch0001: backport-libbpf-Ensure-libbpf-always-opens-files-with-O_CLOEX.pa Patch0002: backport-libbpf-Set-close-on-exec-flag-on-gzopen.patch Patch0003: backport-libbpf-Fix-NULL-pointer-dereference-in_bpf_object__c.patch Patch0004: backport-libbpf-Free-btf_vmlinux-when-closing-bpf_object.patch +Patch0005: backport-libbpf-Avoid-uninitialized-value-in-BPF_CORE_READ_BI.patch # This package supersedes libbpf from kernel-tools, # which has default Epoch: 0. By having Epoch: 1 @@ -70,6 +71,10 @@ developing applications that use %{name} %{_libdir}/libbpf.a %changelog +* Wed Sep 25 2024 zhangmingyi 2:1.2.2-4 +- backport patch from upstream: + backport-libbpf-Avoid-uninitialized-value-in-BPF_CORE_READ_BI.patch + * Fri May 10 2024 jinzhiguang 2:1.2.2-3 - backport patch from upstream: backport-libbpf-Free-btf_vmlinux-when-closing-bpf_object.patch -- Gitee