Accepting request 1045707 from devel:libraries:c_c++
OBS-URL: https://build.opensuse.org/request/show/1045707 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libbpf?expand=0&rev=14
This commit is contained in:
commit
a2f7b64930
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:3d6afde67682c909e341bf194678a8969f17628705af25f900d5f68bd299cb03
|
|
||||||
size 917269
|
|
3
libbpf-1.1.0.tar.gz
Normal file
3
libbpf-1.1.0.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:5da826c968fdb8a2f714701cfef7a4b7078be030cf58b56143b245816301cbb8
|
||||||
|
size 2337951
|
@ -1,67 +0,0 @@
|
|||||||
From 881a10980b7ded995da5d9cc1919992c36c9d2be Mon Sep 17 00:00:00 2001
|
|
||||||
From: Xu Kuohai <xukuohai@huawei.com>
|
|
||||||
Date: Tue, 11 Oct 2022 08:01:04 -0400
|
|
||||||
Subject: [PATCH 2/2] libbpf: Fix memory leak in parse_usdt_arg()
|
|
||||||
|
|
||||||
In the arm64 version of parse_usdt_arg(), when sscanf returns 2, reg_name
|
|
||||||
is allocated but not freed. Fix it.
|
|
||||||
|
|
||||||
Fixes: 0f8619929c57 ("libbpf: Usdt aarch64 arg parsing support")
|
|
||||||
Signed-off-by: Xu Kuohai <xukuohai@huawei.com>
|
|
||||||
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
|
|
||||||
Acked-by: Martin KaFai Lau <martin.lau@kernel.org>
|
|
||||||
Link: https://lore.kernel.org/bpf/20221011120108.782373-3-xukuohai@huaweicloud.com
|
|
||||||
---
|
|
||||||
src/usdt.c | 11 ++++-------
|
|
||||||
1 file changed, 4 insertions(+), 7 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/usdt.c b/src/usdt.c
|
|
||||||
index e83b497..49f3c3b 100644
|
|
||||||
--- a/src/usdt.c
|
|
||||||
+++ b/src/usdt.c
|
|
||||||
@@ -1348,25 +1348,23 @@ static int calc_pt_regs_off(const char *reg_name)
|
|
||||||
|
|
||||||
static int parse_usdt_arg(const char *arg_str, int arg_num, struct usdt_arg_spec *arg)
|
|
||||||
{
|
|
||||||
- char *reg_name = NULL;
|
|
||||||
+ char reg_name[16];
|
|
||||||
int arg_sz, len, reg_off;
|
|
||||||
long off;
|
|
||||||
|
|
||||||
- if (sscanf(arg_str, " %d @ \[ %m[a-z0-9], %ld ] %n", &arg_sz, ®_name, &off, &len) == 3) {
|
|
||||||
+ if (sscanf(arg_str, " %d @ \[ %15[a-z0-9], %ld ] %n", &arg_sz, reg_name, &off, &len) == 3) {
|
|
||||||
/* Memory dereference case, e.g., -4@[sp, 96] */
|
|
||||||
arg->arg_type = USDT_ARG_REG_DEREF;
|
|
||||||
arg->val_off = off;
|
|
||||||
reg_off = calc_pt_regs_off(reg_name);
|
|
||||||
- free(reg_name);
|
|
||||||
if (reg_off < 0)
|
|
||||||
return reg_off;
|
|
||||||
arg->reg_off = reg_off;
|
|
||||||
- } else if (sscanf(arg_str, " %d @ \[ %m[a-z0-9] ] %n", &arg_sz, ®_name, &len) == 2) {
|
|
||||||
+ } else if (sscanf(arg_str, " %d @ \[ %15[a-z0-9] ] %n", &arg_sz, reg_name, &len) == 2) {
|
|
||||||
/* Memory dereference case, e.g., -4@[sp] */
|
|
||||||
arg->arg_type = USDT_ARG_REG_DEREF;
|
|
||||||
arg->val_off = 0;
|
|
||||||
reg_off = calc_pt_regs_off(reg_name);
|
|
||||||
- free(reg_name);
|
|
||||||
if (reg_off < 0)
|
|
||||||
return reg_off;
|
|
||||||
arg->reg_off = reg_off;
|
|
||||||
@@ -1375,12 +1373,11 @@ static int parse_usdt_arg(const char *arg_str, int arg_num, struct usdt_arg_spec
|
|
||||||
arg->arg_type = USDT_ARG_CONST;
|
|
||||||
arg->val_off = off;
|
|
||||||
arg->reg_off = 0;
|
|
||||||
- } else if (sscanf(arg_str, " %d @ %m[a-z0-9] %n", &arg_sz, ®_name, &len) == 2) {
|
|
||||||
+ } else if (sscanf(arg_str, " %d @ %15[a-z0-9] %n", &arg_sz, reg_name, &len) == 2) {
|
|
||||||
/* Register read case, e.g., -8@x4 */
|
|
||||||
arg->arg_type = USDT_ARG_REG;
|
|
||||||
arg->val_off = 0;
|
|
||||||
reg_off = calc_pt_regs_off(reg_name);
|
|
||||||
- free(reg_name);
|
|
||||||
if (reg_off < 0)
|
|
||||||
return reg_off;
|
|
||||||
arg->reg_off = reg_off;
|
|
||||||
--
|
|
||||||
2.38.0
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
|||||||
From 3a3ef0c1d09e1894740db71cdcb7be0bfd713671 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Shung-Hsi Yu <shung-hsi.yu@suse.com>
|
|
||||||
Date: Wed, 12 Oct 2022 10:23:53 +0800
|
|
||||||
Subject: [PATCH 4/4] libbpf: Fix null-pointer dereference in
|
|
||||||
find_prog_by_sec_insn()
|
|
||||||
|
|
||||||
When there are no program sections, obj->programs is left unallocated,
|
|
||||||
and find_prog_by_sec_insn()'s search lands on &obj->programs[0] == NULL,
|
|
||||||
and will cause null-pointer dereference in the following access to
|
|
||||||
prog->sec_idx.
|
|
||||||
|
|
||||||
Guard the search with obj->nr_programs similar to what's being done in
|
|
||||||
__bpf_program__iter() to prevent null-pointer access from happening.
|
|
||||||
|
|
||||||
Fixes: db2b8b06423c ("libbpf: Support CO-RE relocations for multi-prog sections")
|
|
||||||
Signed-off-by: Shung-Hsi Yu <shung-hsi.yu@suse.com>
|
|
||||||
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
|
|
||||||
Link: https://lore.kernel.org/bpf/20221012022353.7350-4-shung-hsi.yu@suse.com
|
|
||||||
---
|
|
||||||
src/libbpf.c | 3 +++
|
|
||||||
1 file changed, 3 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/src/libbpf.c b/src/libbpf.c
|
|
||||||
index 29e9df0..8c3f236 100644
|
|
||||||
--- a/src/libbpf.c
|
|
||||||
+++ b/src/libbpf.c
|
|
||||||
@@ -4115,6 +4115,9 @@ static struct bpf_program *find_prog_by_sec_insn(const struct bpf_object *obj,
|
|
||||||
int l = 0, r = obj->nr_programs - 1, m;
|
|
||||||
struct bpf_program *prog;
|
|
||||||
|
|
||||||
+ if (!obj->nr_programs)
|
|
||||||
+ return NULL;
|
|
||||||
+
|
|
||||||
while (l < r) {
|
|
||||||
m = l + (r - l + 1) / 2;
|
|
||||||
prog = &obj->programs[m];
|
|
||||||
--
|
|
||||||
2.38.0
|
|
||||||
|
|
@ -1,136 +0,0 @@
|
|||||||
From 54caf920db0e489de90f3aaaa41e2a51ddbcd084 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Xu Kuohai <xukuohai@huawei.com>
|
|
||||||
Date: Tue, 11 Oct 2022 08:01:03 -0400
|
|
||||||
Subject: [PATCH 1/1] libbpf: Fix use-after-free in btf_dump_name_dups
|
|
||||||
|
|
||||||
ASAN reports an use-after-free in btf_dump_name_dups:
|
|
||||||
|
|
||||||
ERROR: AddressSanitizer: heap-use-after-free on address 0xffff927006db at pc 0xaaaab5dfb618 bp 0xffffdd89b890 sp 0xffffdd89b928
|
|
||||||
READ of size 2 at 0xffff927006db thread T0
|
|
||||||
#0 0xaaaab5dfb614 in __interceptor_strcmp.part.0 (test_progs+0x21b614)
|
|
||||||
#1 0xaaaab635f144 in str_equal_fn tools/lib/bpf/btf_dump.c:127
|
|
||||||
#2 0xaaaab635e3e0 in hashmap_find_entry tools/lib/bpf/hashmap.c:143
|
|
||||||
#3 0xaaaab635e72c in hashmap__find tools/lib/bpf/hashmap.c:212
|
|
||||||
#4 0xaaaab6362258 in btf_dump_name_dups tools/lib/bpf/btf_dump.c:1525
|
|
||||||
#5 0xaaaab636240c in btf_dump_resolve_name tools/lib/bpf/btf_dump.c:1552
|
|
||||||
#6 0xaaaab6362598 in btf_dump_type_name tools/lib/bpf/btf_dump.c:1567
|
|
||||||
#7 0xaaaab6360b48 in btf_dump_emit_struct_def tools/lib/bpf/btf_dump.c:912
|
|
||||||
#8 0xaaaab6360630 in btf_dump_emit_type tools/lib/bpf/btf_dump.c:798
|
|
||||||
#9 0xaaaab635f720 in btf_dump__dump_type tools/lib/bpf/btf_dump.c:282
|
|
||||||
#10 0xaaaab608523c in test_btf_dump_incremental tools/testing/selftests/bpf/prog_tests/btf_dump.c:236
|
|
||||||
#11 0xaaaab6097530 in test_btf_dump tools/testing/selftests/bpf/prog_tests/btf_dump.c:875
|
|
||||||
#12 0xaaaab6314ed0 in run_one_test tools/testing/selftests/bpf/test_progs.c:1062
|
|
||||||
#13 0xaaaab631a0a8 in main tools/testing/selftests/bpf/test_progs.c:1697
|
|
||||||
#14 0xffff9676d214 in __libc_start_main ../csu/libc-start.c:308
|
|
||||||
#15 0xaaaab5d65990 (test_progs+0x185990)
|
|
||||||
|
|
||||||
0xffff927006db is located 11 bytes inside of 16-byte region [0xffff927006d0,0xffff927006e0)
|
|
||||||
freed by thread T0 here:
|
|
||||||
#0 0xaaaab5e2c7c4 in realloc (test_progs+0x24c7c4)
|
|
||||||
#1 0xaaaab634f4a0 in libbpf_reallocarray tools/lib/bpf/libbpf_internal.h:191
|
|
||||||
#2 0xaaaab634f840 in libbpf_add_mem tools/lib/bpf/btf.c:163
|
|
||||||
#3 0xaaaab636643c in strset_add_str_mem tools/lib/bpf/strset.c:106
|
|
||||||
#4 0xaaaab6366560 in strset__add_str tools/lib/bpf/strset.c:157
|
|
||||||
#5 0xaaaab6352d70 in btf__add_str tools/lib/bpf/btf.c:1519
|
|
||||||
#6 0xaaaab6353e10 in btf__add_field tools/lib/bpf/btf.c:2032
|
|
||||||
#7 0xaaaab6084fcc in test_btf_dump_incremental tools/testing/selftests/bpf/prog_tests/btf_dump.c:232
|
|
||||||
#8 0xaaaab6097530 in test_btf_dump tools/testing/selftests/bpf/prog_tests/btf_dump.c:875
|
|
||||||
#9 0xaaaab6314ed0 in run_one_test tools/testing/selftests/bpf/test_progs.c:1062
|
|
||||||
#10 0xaaaab631a0a8 in main tools/testing/selftests/bpf/test_progs.c:1697
|
|
||||||
#11 0xffff9676d214 in __libc_start_main ../csu/libc-start.c:308
|
|
||||||
#12 0xaaaab5d65990 (test_progs+0x185990)
|
|
||||||
|
|
||||||
previously allocated by thread T0 here:
|
|
||||||
#0 0xaaaab5e2c7c4 in realloc (test_progs+0x24c7c4)
|
|
||||||
#1 0xaaaab634f4a0 in libbpf_reallocarray tools/lib/bpf/libbpf_internal.h:191
|
|
||||||
#2 0xaaaab634f840 in libbpf_add_mem tools/lib/bpf/btf.c:163
|
|
||||||
#3 0xaaaab636643c in strset_add_str_mem tools/lib/bpf/strset.c:106
|
|
||||||
#4 0xaaaab6366560 in strset__add_str tools/lib/bpf/strset.c:157
|
|
||||||
#5 0xaaaab6352d70 in btf__add_str tools/lib/bpf/btf.c:1519
|
|
||||||
#6 0xaaaab6353ff0 in btf_add_enum_common tools/lib/bpf/btf.c:2070
|
|
||||||
#7 0xaaaab6354080 in btf__add_enum tools/lib/bpf/btf.c:2102
|
|
||||||
#8 0xaaaab6082f50 in test_btf_dump_incremental tools/testing/selftests/bpf/prog_tests/btf_dump.c:162
|
|
||||||
#9 0xaaaab6097530 in test_btf_dump tools/testing/selftests/bpf/prog_tests/btf_dump.c:875
|
|
||||||
#10 0xaaaab6314ed0 in run_one_test tools/testing/selftests/bpf/test_progs.c:1062
|
|
||||||
#11 0xaaaab631a0a8 in main tools/testing/selftests/bpf/test_progs.c:1697
|
|
||||||
#12 0xffff9676d214 in __libc_start_main ../csu/libc-start.c:308
|
|
||||||
#13 0xaaaab5d65990 (test_progs+0x185990)
|
|
||||||
|
|
||||||
The reason is that the key stored in hash table name_map is a string
|
|
||||||
address, and the string memory is allocated by realloc() function, when
|
|
||||||
the memory is resized by realloc() later, the old memory may be freed,
|
|
||||||
so the address stored in name_map references to a freed memory, causing
|
|
||||||
use-after-free.
|
|
||||||
|
|
||||||
Fix it by storing duplicated string address in name_map.
|
|
||||||
|
|
||||||
Fixes: 919d2b1dbb07 ("libbpf: Allow modification of BTF and add btf__add_str API")
|
|
||||||
Signed-off-by: Xu Kuohai <xukuohai@huawei.com>
|
|
||||||
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
|
|
||||||
Acked-by: Martin KaFai Lau <martin.lau@kernel.org>
|
|
||||||
Link: https://lore.kernel.org/bpf/20221011120108.782373-2-xukuohai@huaweicloud.com
|
|
||||||
---
|
|
||||||
src/btf_dump.c | 29 ++++++++++++++++++++++++++---
|
|
||||||
1 file changed, 26 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/btf_dump.c b/src/btf_dump.c
|
|
||||||
index e4da6de..bf0cc0e 100644
|
|
||||||
--- a/src/btf_dump.c
|
|
||||||
+++ b/src/btf_dump.c
|
|
||||||
@@ -219,6 +219,17 @@ static int btf_dump_resize(struct btf_dump *d)
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static void btf_dump_free_names(struct hashmap *map)
|
|
||||||
+{
|
|
||||||
+ size_t bkt;
|
|
||||||
+ struct hashmap_entry *cur;
|
|
||||||
+
|
|
||||||
+ hashmap__for_each_entry(map, cur, bkt)
|
|
||||||
+ free((void *)cur->key);
|
|
||||||
+
|
|
||||||
+ hashmap__free(map);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
void btf_dump__free(struct btf_dump *d)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
@@ -237,8 +248,8 @@ void btf_dump__free(struct btf_dump *d)
|
|
||||||
free(d->cached_names);
|
|
||||||
free(d->emit_queue);
|
|
||||||
free(d->decl_stack);
|
|
||||||
- hashmap__free(d->type_names);
|
|
||||||
- hashmap__free(d->ident_names);
|
|
||||||
+ btf_dump_free_names(d->type_names);
|
|
||||||
+ btf_dump_free_names(d->ident_names);
|
|
||||||
|
|
||||||
free(d);
|
|
||||||
}
|
|
||||||
@@ -1524,11 +1535,23 @@ static void btf_dump_emit_type_cast(struct btf_dump *d, __u32 id,
|
|
||||||
static size_t btf_dump_name_dups(struct btf_dump *d, struct hashmap *name_map,
|
|
||||||
const char *orig_name)
|
|
||||||
{
|
|
||||||
+ char *old_name, *new_name;
|
|
||||||
size_t dup_cnt = 0;
|
|
||||||
+ int err;
|
|
||||||
+
|
|
||||||
+ new_name = strdup(orig_name);
|
|
||||||
+ if (!new_name)
|
|
||||||
+ return 1;
|
|
||||||
|
|
||||||
hashmap__find(name_map, orig_name, (void **)&dup_cnt);
|
|
||||||
dup_cnt++;
|
|
||||||
- hashmap__set(name_map, orig_name, (void *)dup_cnt, NULL, NULL);
|
|
||||||
+
|
|
||||||
+ err = hashmap__set(name_map, new_name, (void *)dup_cnt,
|
|
||||||
+ (const void **)&old_name, NULL);
|
|
||||||
+ if (err)
|
|
||||||
+ free(new_name);
|
|
||||||
+
|
|
||||||
+ free(old_name);
|
|
||||||
|
|
||||||
return dup_cnt;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.38.0
|
|
||||||
|
|
@ -1,82 +0,0 @@
|
|||||||
From 741277511035893c72a34df05da3b943afa747a4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Shung-Hsi Yu <shung-hsi.yu@suse.com>
|
|
||||||
Date: Wed, 12 Oct 2022 10:23:51 +0800
|
|
||||||
Subject: [PATCH 3/3] libbpf: Use elf_getshdrnum() instead of e_shnum
|
|
||||||
|
|
||||||
This commit replace e_shnum with the elf_getshdrnum() helper to fix two
|
|
||||||
oss-fuzz-reported heap-buffer overflow in __bpf_object__open. Both
|
|
||||||
reports are incorrectly marked as fixed and while still being
|
|
||||||
reproducible in the latest libbpf.
|
|
||||||
|
|
||||||
# clusterfuzz-testcase-minimized-bpf-object-fuzzer-5747922482888704
|
|
||||||
libbpf: loading object 'fuzz-object' from buffer
|
|
||||||
libbpf: sec_cnt is 0
|
|
||||||
libbpf: elf: section(1) .data, size 0, link 538976288, flags 2020202020202020, type=2
|
|
||||||
libbpf: elf: section(2) .data, size 32, link 538976288, flags 202020202020ff20, type=1
|
|
||||||
=================================================================
|
|
||||||
==13==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6020000000c0 at pc 0x0000005a7b46 bp 0x7ffd12214af0 sp 0x7ffd12214ae8
|
|
||||||
WRITE of size 4 at 0x6020000000c0 thread T0
|
|
||||||
SCARINESS: 46 (4-byte-write-heap-buffer-overflow-far-from-bounds)
|
|
||||||
#0 0x5a7b45 in bpf_object__elf_collect /src/libbpf/src/libbpf.c:3414:24
|
|
||||||
#1 0x5733c0 in bpf_object_open /src/libbpf/src/libbpf.c:7223:16
|
|
||||||
#2 0x5739fd in bpf_object__open_mem /src/libbpf/src/libbpf.c:7263:20
|
|
||||||
...
|
|
||||||
|
|
||||||
The issue lie in libbpf's direct use of e_shnum field in ELF header as
|
|
||||||
the section header count. Where as libelf implemented an extra logic
|
|
||||||
that, when e_shnum == 0 && e_shoff != 0, will use sh_size member of the
|
|
||||||
initial section header as the real section header count (part of ELF
|
|
||||||
spec to accommodate situation where section header counter is larger
|
|
||||||
than SHN_LORESERVE).
|
|
||||||
|
|
||||||
The above inconsistency lead to libbpf writing into a zero-entry calloc
|
|
||||||
area. So intead of using e_shnum directly, use the elf_getshdrnum()
|
|
||||||
helper provided by libelf to retrieve the section header counter into
|
|
||||||
sec_cnt.
|
|
||||||
|
|
||||||
Fixes: 0d6988e16a12 ("libbpf: Fix section counting logic")
|
|
||||||
Fixes: 25bbbd7a444b ("libbpf: Remove assumptions about uniqueness of .rodata/.data/.bss maps")
|
|
||||||
Signed-off-by: Shung-Hsi Yu <shung-hsi.yu@suse.com>
|
|
||||||
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
|
|
||||||
Link: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40868
|
|
||||||
Link: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40957
|
|
||||||
Link: https://lore.kernel.org/bpf/20221012022353.7350-2-shung-hsi.yu@suse.com
|
|
||||||
---
|
|
||||||
src/libbpf.c | 13 +++++++++----
|
|
||||||
1 file changed, 9 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/libbpf.c b/src/libbpf.c
|
|
||||||
index 184ce16..2e8ac13 100644
|
|
||||||
--- a/src/libbpf.c
|
|
||||||
+++ b/src/libbpf.c
|
|
||||||
@@ -597,7 +597,7 @@ struct elf_state {
|
|
||||||
size_t shstrndx; /* section index for section name strings */
|
|
||||||
size_t strtabidx;
|
|
||||||
struct elf_sec_desc *secs;
|
|
||||||
- int sec_cnt;
|
|
||||||
+ size_t sec_cnt;
|
|
||||||
int btf_maps_shndx;
|
|
||||||
__u32 btf_maps_sec_btf_id;
|
|
||||||
int text_shndx;
|
|
||||||
@@ -3312,10 +3312,15 @@ static int bpf_object__elf_collect(struct bpf_object *obj)
|
|
||||||
Elf64_Shdr *sh;
|
|
||||||
|
|
||||||
/* ELF section indices are 0-based, but sec #0 is special "invalid"
|
|
||||||
- * section. e_shnum does include sec #0, so e_shnum is the necessary
|
|
||||||
- * size of an array to keep all the sections.
|
|
||||||
+ * section. Since section count retrieved by elf_getshdrnum() does
|
|
||||||
+ * include sec #0, it is already the necessary size of an array to keep
|
|
||||||
+ * all the sections.
|
|
||||||
*/
|
|
||||||
- obj->efile.sec_cnt = obj->efile.ehdr->e_shnum;
|
|
||||||
+ if (elf_getshdrnum(obj->efile.elf, &obj->efile.sec_cnt)) {
|
|
||||||
+ pr_warn("elf: failed to get the number of sections for %s: %s\n",
|
|
||||||
+ obj->path, elf_errmsg(-1));
|
|
||||||
+ return -LIBBPF_ERRNO__FORMAT;
|
|
||||||
+ }
|
|
||||||
obj->efile.secs = calloc(obj->efile.sec_cnt, sizeof(*obj->efile.secs));
|
|
||||||
if (!obj->efile.secs)
|
|
||||||
return -ENOMEM;
|
|
||||||
--
|
|
||||||
2.38.0
|
|
||||||
|
|
@ -1,3 +1,47 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Dec 22 07:08:39 UTC 2022 - Dirk Müller <dmueller@suse.com>
|
||||||
|
|
||||||
|
- update to v1.1.0:
|
||||||
|
User space-side features and APIs:
|
||||||
|
* user-space ring buffer (BPF_MAP_TYPE_USER_RINGBUF) support;
|
||||||
|
* new documentation page listing all recognized SEC() definitions;
|
||||||
|
* BTF dedup improvements:
|
||||||
|
* unambiguous fwd declaration resolution for structs and unions;
|
||||||
|
* better handling of some corner cases with identical structs and arrays;
|
||||||
|
* mixed enum and enum64 forward declaration resolution logic;
|
||||||
|
* bpf_{link,btf,pro,mapg}_get_fd_by_id_opts() and bpf_get_fd_by_id_opts()
|
||||||
|
APIs;
|
||||||
|
* libbpf supports loading raw BTF for BPF CO-RE from known search paths;
|
||||||
|
* support for new cgroup local storage (BPF_MAP_TYPE_CGRP_STORAGE);
|
||||||
|
* libbpf will only add BPF_F_MMAPABLE flag for data maps with global
|
||||||
|
(i.e., non-static) vars;
|
||||||
|
* latest Linux UAPI headers with lots of changes synced into
|
||||||
|
include/uapi/linux.
|
||||||
|
BPF-side features and APIs;
|
||||||
|
* BPF_PROG2() macro added that supports struct-by-value arguments;
|
||||||
|
* new BPF helpers:
|
||||||
|
* bpf_user_ringbuf_drain();
|
||||||
|
* cgrp_storage_get() and cgrp_storage_delete().
|
||||||
|
Bug fixes
|
||||||
|
* better handling of padding corner cases;
|
||||||
|
* btf__align_of() determines packed structs better now;
|
||||||
|
* improved handling of enums of non-standard sizes;
|
||||||
|
* USDT spec parsing improvements;
|
||||||
|
* overflow handling fixes for ringbufs;
|
||||||
|
* Makefile fixes to support cross-compilation for 32-bit targets;
|
||||||
|
* fix crash if SEC("freplace") programs don't have attach_prog_fd set;
|
||||||
|
* better handling of file existence checks when running as non-root with
|
||||||
|
enhanced capabilities;
|
||||||
|
* a bunch of small fixes:
|
||||||
|
* ELF handling improvements;
|
||||||
|
* fix memory leak in USDT argument parsing logic;
|
||||||
|
* fix NULL dereferences in few corner cases;
|
||||||
|
* improved netlink attribute iteration handling.
|
||||||
|
- drop libbpf-Use-elf_getshdrnum-instead-of-e_shnum.patch,
|
||||||
|
libbpf-Fix-use-after-free-in-btf_dump_name_dups.patch,
|
||||||
|
libbpf-Fix-memory-leak-in-parse_usdt_arg.patch
|
||||||
|
libbpf-Fix-null-pointer-dereference-in-find_prog_by_.patch (upstream)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Nov 8 06:03:55 UTC 2022 - Shung-Hsi Yu <shung-hsi.yu@suse.com>
|
Tue Nov 8 06:03:55 UTC 2022 - Shung-Hsi Yu <shung-hsi.yu@suse.com>
|
||||||
|
|
||||||
|
@ -19,17 +19,13 @@
|
|||||||
%define sover_major 1
|
%define sover_major 1
|
||||||
%define libname libbpf%{sover_major}
|
%define libname libbpf%{sover_major}
|
||||||
Name: libbpf
|
Name: libbpf
|
||||||
Version: 1.0.1
|
Version: 1.1.0
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: C library for managing eBPF programs and maps
|
Summary: C library for managing eBPF programs and maps
|
||||||
License: LGPL-2.1-only
|
License: LGPL-2.1-only
|
||||||
URL: https://github.com/libbpf/libbpf
|
URL: https://github.com/libbpf/libbpf
|
||||||
Source: https://github.com/libbpf/libbpf/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
|
Source: https://github.com/libbpf/libbpf/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
|
||||||
Source99: baselibs.conf
|
Source99: baselibs.conf
|
||||||
Patch1: libbpf-Fix-use-after-free-in-btf_dump_name_dups.patch
|
|
||||||
Patch2: libbpf-Fix-memory-leak-in-parse_usdt_arg.patch
|
|
||||||
Patch3: libbpf-Use-elf_getshdrnum-instead-of-e_shnum.patch
|
|
||||||
Patch4: libbpf-Fix-null-pointer-dereference-in-find_prog_by_.patch
|
|
||||||
BuildRequires: libelf-devel
|
BuildRequires: libelf-devel
|
||||||
BuildRequires: linux-glibc-devel >= 4.5
|
BuildRequires: linux-glibc-devel >= 4.5
|
||||||
BuildRequires: zlib-devel
|
BuildRequires: zlib-devel
|
||||||
|
Loading…
Reference in New Issue
Block a user