From 9b5804cc2a5a4db4ed01d7c6de9437c0c0c41e80 Mon Sep 17 00:00:00 2001 From: zhang-mingyi66 Date: Wed, 25 Sep 2024 15:47:19 +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 | 8 ++- 2 files changed, 63 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 4d49b22..39ea777 100644 --- a/libbpf.spec +++ b/libbpf.spec @@ -4,7 +4,7 @@ Name: %{githubname} Version: %{githubver} -Release: 14 +Release: 15 Summary: Libbpf library License: LGPLv2 or BSD @@ -43,6 +43,8 @@ Patch0026: backport-libbpf-Fix-str_has_sfxs-return-value.patch Patch0027: backport-libbpf-Initialize-err-in-probe_map_create.patch Patch0028: backport-libbpf-Modify-the-function-name-in-libbpf.c-to-match.patch Patch0029: backport-libbpf-Fix-an-error-in-64bit-relocation-value-comput.patch +Patch0030: 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 # this libbpf will take over smoothly @@ -94,6 +96,10 @@ developing applications that use %{name} %{_libdir}/libbpf.a %changelog +* Wed Sep 25 2024 zhangmingyi 2:0.8.1-15 +- backport patch from upstream: + backport-libbpf-Avoid-uninitialized-value-in-BPF_CORE_READ_BI.patch + * Thu Jun 20 2024 xiesongyang - 2:0.8.1-14 - backport patch from upstream: backport-libbpf-Fix-an-error-in-64bit-relocation-value-comput.patch -- Gitee