lkml.org 
[lkml]   [2022]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.17 306/772] libbpf: Fix logic for finding matching program for CO-RE relocation
    Date
    From: Andrii Nakryiko <andrii@kernel.org>

    [ Upstream commit 966a7509325395c51c5f6d89e7352b0585e4804b ]

    Fix the bug in bpf_object__relocate_core() which can lead to finding
    invalid matching BPF program when processing CO-RE relocation. IF
    matching program is not found, last encountered program will be assumed
    to be correct program and thus error detection won't detect the problem.

    Fixes: 9c82a63cf370 ("libbpf: Fix CO-RE relocs against .text section")
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Link: https://lore.kernel.org/bpf/20220426004511.2691730-4-andrii@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/lib/bpf/libbpf.c | 5 +++--
    1 file changed, 3 insertions(+), 2 deletions(-)

    diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
    index 9c202bba911c..0ea7b91e675f 100644
    --- a/tools/lib/bpf/libbpf.c
    +++ b/tools/lib/bpf/libbpf.c
    @@ -5639,9 +5639,10 @@ bpf_object__relocate_core(struct bpf_object *obj, const char *targ_btf_path)
    */
    prog = NULL;
    for (i = 0; i < obj->nr_programs; i++) {
    - prog = &obj->programs[i];
    - if (strcmp(prog->sec_name, sec_name) == 0)
    + if (strcmp(obj->programs[i].sec_name, sec_name) == 0) {
    + prog = &obj->programs[i];
    break;
    + }
    }
    if (!prog) {
    pr_warn("sec '%s': failed to find a BPF program\n", sec_name);
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-06-07 23:03    [W:4.298 / U:0.124 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site