Patch "libbpf: Do not close un-owned FD 0 on errors" has been added to the 5.13-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    libbpf: Do not close un-owned FD 0 on errors

to the 5.13-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     libbpf-do-not-close-un-owned-fd-0-on-errors.patch
and it can be found in the queue-5.13 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 83c7009971a1fbd8115dcaf3300a648218a6189d
Author: Daniel Xu <dxu@xxxxxxxxx>
Date:   Wed Jul 28 16:09:21 2021 -0700

    libbpf: Do not close un-owned FD 0 on errors
    
    [ Upstream commit c34c338a40e4f3b6f80889cd17fd9281784d1c32 ]
    
    Before this patch, btf_new() was liable to close an arbitrary FD 0 if
    BTF parsing failed. This was because:
    
    * btf->fd was initialized to 0 through the calloc()
    * btf__free() (in the `done` label) closed any FDs >= 0
    * btf->fd is left at 0 if parsing fails
    
    This issue was discovered on a system using libbpf v0.3 (without
    BTF_KIND_FLOAT support) but with a kernel that had BTF_KIND_FLOAT types
    in BTF. Thus, parsing fails.
    
    While this patch technically doesn't fix any issues b/c upstream libbpf
    has BTF_KIND_FLOAT support, it'll help prevent issues in the future if
    more BTF types are added. It also allow the fix to be backported to
    older libbpf's.
    
    Fixes: 3289959b97ca ("libbpf: Support BTF loading and raw data output in both endianness")
    Signed-off-by: Daniel Xu <dxu@xxxxxxxxx>
    Signed-off-by: Andrii Nakryiko <andrii@xxxxxxxxxx>
    Signed-off-by: Daniel Borkmann <daniel@xxxxxxxxxxxxx>
    Acked-by: Yonghong Song <yhs@xxxxxx>
    Link: https://lore.kernel.org/bpf/5969bb991adedb03c6ae93e051fd2a00d293cf25.1627513670.git.dxu@xxxxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c
index d57e13a13798..1d9e5b35524c 100644
--- a/tools/lib/bpf/btf.c
+++ b/tools/lib/bpf/btf.c
@@ -805,6 +805,7 @@ static struct btf *btf_new(const void *data, __u32 size, struct btf *base_btf)
 	btf->nr_types = 0;
 	btf->start_id = 1;
 	btf->start_str_off = 0;
+	btf->fd = -1;
 
 	if (base_btf) {
 		btf->base_btf = base_btf;
@@ -833,8 +834,6 @@ static struct btf *btf_new(const void *data, __u32 size, struct btf *base_btf)
 	if (err)
 		goto done;
 
-	btf->fd = -1;
-
 done:
 	if (err) {
 		btf__free(btf);



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux