lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.16 0279/1039] libbpf: Fix gen_loader assumption on number of programs.
    Date
    From: Alexei Starovoitov <ast@kernel.org>

    [ Upstream commit 259172bb6514758ce3be1610c500b51a9f44212a ]

    libbpf's obj->nr_programs includes static and global functions. That number
    could be higher than the actual number of bpf programs going be loaded by
    gen_loader. Passing larger nr_programs to bpf_gen__init() doesn't hurt. Those
    exra stack slots will stay as zero. bpf_gen__finish() needs to check that
    actual number of progs that gen_loader saw is less than or equal to
    obj->nr_programs.

    Fixes: ba05fd36b851 ("libbpf: Perform map fd cleanup for gen_loader in case of error")
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/lib/bpf/gen_loader.c | 5 +++--
    1 file changed, 3 insertions(+), 2 deletions(-)

    diff --git a/tools/lib/bpf/gen_loader.c b/tools/lib/bpf/gen_loader.c
    index 4ac65afc99e50..737e7cbe3e547 100644
    --- a/tools/lib/bpf/gen_loader.c
    +++ b/tools/lib/bpf/gen_loader.c
    @@ -371,8 +371,9 @@ int bpf_gen__finish(struct bpf_gen *gen, int nr_progs, int nr_maps)
    {
    int i;

    - if (nr_progs != gen->nr_progs || nr_maps != gen->nr_maps) {
    - pr_warn("progs/maps mismatch\n");
    + if (nr_progs < gen->nr_progs || nr_maps != gen->nr_maps) {
    + pr_warn("nr_progs %d/%d nr_maps %d/%d mismatch\n",
    + nr_progs, gen->nr_progs, nr_maps, gen->nr_maps);
    gen->error = -EFAULT;
    return gen->error;
    }
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-25 04:39    [W:3.829 / U:1.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site