lkml.org 
[lkml]   [2020]   [Jun]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.7 265/274] libbpf: Fix perf_buffer__free() API for sparse allocs
    Date
    From: Eelco Chaudron <echaudro@redhat.com>

    [ Upstream commit 601b05ca6edb0422bf6ce313fbfd55ec7bbbc0fd ]

    In case the cpu_bufs are sparsely allocated they are not all
    free'ed. These changes will fix this.

    Fixes: fb84b8224655 ("libbpf: add perf buffer API")
    Signed-off-by: Eelco Chaudron <echaudro@redhat.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Andrii Nakryiko <andriin@fb.com>
    Link: https://lore.kernel.org/bpf/159056888305.330763.9684536967379110349.stgit@ebuild
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/lib/bpf/libbpf.c | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
    index cd53204d33f0..0c5b4fb553fb 100644
    --- a/tools/lib/bpf/libbpf.c
    +++ b/tools/lib/bpf/libbpf.c
    @@ -7809,9 +7809,12 @@ void perf_buffer__free(struct perf_buffer *pb)
    if (!pb)
    return;
    if (pb->cpu_bufs) {
    - for (i = 0; i < pb->cpu_cnt && pb->cpu_bufs[i]; i++) {
    + for (i = 0; i < pb->cpu_cnt; i++) {
    struct perf_cpu_buf *cpu_buf = pb->cpu_bufs[i];

    + if (!cpu_buf)
    + continue;
    +
    bpf_map_delete_elem(pb->map_fd, &cpu_buf->map_key);
    perf_buffer__free_cpu_buf(pb, cpu_buf);
    }
    --
    2.25.1
    \
     
     \ /
      Last update: 2020-06-09 02:45    [W:4.054 / U:0.092 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site