提交 b9915144 编写于 作者: A Andrii Nakryiko 提交者: Zheng Zengkai

libbpf: Fix memory leak when emitting final btf_ext

mainline inclusion
from mainline-5.13-rc1
commit 05d81703
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5EUVD
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=05d817031ff9686a8206039b19e37616cf9e1d44

-------------------------------------------------

Free temporary allocated memory used to construct finalized .BTF.ext data.
Found by Coverity static analysis on libbpf's Github repo.

Fixes: 8fd27bf6 ("libbpf: Add BPF static linker BTF and BTF.ext support")
Signed-off-by: NAndrii Nakryiko <andrii@kernel.org>
Signed-off-by: NAlexei Starovoitov <ast@kernel.org>
Acked-by: NSong Liu <songliubraving@fb.com>
Link: https://lore.kernel.org/bpf/20210327042502.969745-1-andrii@kernel.org
(cherry picked from commit 05d81703)
Signed-off-by: NWang Yufen <wangyufen@huawei.com>
上级 6e2b086a
......@@ -1906,8 +1906,10 @@ static int finalize_btf_ext(struct bpf_linker *linker)
struct dst_sec *sec = &linker->secs[i];
sz = emit_btf_ext_data(linker, cur, sec->sec_name, &sec->func_info);
if (sz < 0)
return sz;
if (sz < 0) {
err = sz;
goto out;
}
cur += sz;
}
......@@ -1921,8 +1923,10 @@ static int finalize_btf_ext(struct bpf_linker *linker)
struct dst_sec *sec = &linker->secs[i];
sz = emit_btf_ext_data(linker, cur, sec->sec_name, &sec->line_info);
if (sz < 0)
return sz;
if (sz < 0) {
err = sz;
goto out;
}
cur += sz;
}
......@@ -1936,8 +1940,10 @@ static int finalize_btf_ext(struct bpf_linker *linker)
struct dst_sec *sec = &linker->secs[i];
sz = emit_btf_ext_data(linker, cur, sec->sec_name, &sec->core_relo_info);
if (sz < 0)
return sz;
if (sz < 0) {
err = sz;
goto out;
}
cur += sz;
}
......@@ -1948,8 +1954,10 @@ static int finalize_btf_ext(struct bpf_linker *linker)
if (err) {
linker->btf_ext = NULL;
pr_warn("failed to parse final .BTF.ext data: %d\n", err);
return err;
goto out;
}
return 0;
out:
free(data);
return err;
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册