lkml.org 
[lkml]   [2020]   [Nov]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.9 126/252] tools, bpftool: Add missing close before bpftool net attach exit
    Date
    From: Wang Hai <wanghai38@huawei.com>

    [ Upstream commit 50431b45685b600fc2851a3f2b53e24643efe6d3 ]

    progfd is created by prog_parse_fd() in do_attach() and before the latter
    returns in case of success, the file descriptor should be closed.

    Fixes: 04949ccc273e ("tools: bpftool: add net attach command to attach XDP on interface")
    Signed-off-by: Wang Hai <wanghai38@huawei.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20201113115152.53178-1-wanghai38@huawei.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/bpf/bpftool/net.c | 18 +++++++++---------
    1 file changed, 9 insertions(+), 9 deletions(-)

    diff --git a/tools/bpf/bpftool/net.c b/tools/bpf/bpftool/net.c
    index 56c3a2bae3ef2..029c8188a2f90 100644
    --- a/tools/bpf/bpftool/net.c
    +++ b/tools/bpf/bpftool/net.c
    @@ -313,8 +313,8 @@ static int do_attach(int argc, char **argv)

    ifindex = net_parse_dev(&argc, &argv);
    if (ifindex < 1) {
    - close(progfd);
    - return -EINVAL;
    + err = -EINVAL;
    + goto cleanup;
    }

    if (argc) {
    @@ -322,8 +322,8 @@ static int do_attach(int argc, char **argv)
    overwrite = true;
    } else {
    p_err("expected 'overwrite', got: '%s'?", *argv);
    - close(progfd);
    - return -EINVAL;
    + err = -EINVAL;
    + goto cleanup;
    }
    }

    @@ -331,17 +331,17 @@ static int do_attach(int argc, char **argv)
    if (is_prefix("xdp", attach_type_strings[attach_type]))
    err = do_attach_detach_xdp(progfd, attach_type, ifindex,
    overwrite);
    -
    - if (err < 0) {
    + if (err) {
    p_err("interface %s attach failed: %s",
    attach_type_strings[attach_type], strerror(-err));
    - return err;
    + goto cleanup;
    }

    if (json_output)
    jsonw_null(json_wtr);
    -
    - return 0;
    +cleanup:
    + close(progfd);
    + return err;
    }

    static int do_detach(int argc, char **argv)
    --
    2.27.0


    \
     
     \ /
      Last update: 2020-11-23 14:41    [W:4.324 / U:0.828 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site