lkml.org 
[lkml]   [2022]   [Aug]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.18 0369/1095] selftests/bpf: Fix rare segfault in sock_fields prog test
    Date
    From: Jörn-Thorben Hinz <jthinz@mailbox.tu-berlin.de>

    [ Upstream commit 6dc7a0baf1a70b7d22662d38481824c14ddd80c5 ]

    test_sock_fields__detach() got called with a null pointer here when one
    of the CHECKs or ASSERTs up to the test_sock_fields__open_and_load()
    call resulted in a jump to the "done" label.

    A skeletons *__detach() is not safe to call with a null pointer, though.
    This led to a segfault.

    Go the easy route and only call test_sock_fields__destroy() which is
    null-pointer safe and includes detaching.

    Came across this while looking[1] to introduce the usage of
    bpf_tcp_helpers.h (included in progs/test_sock_fields.c) together with
    vmlinux.h.

    [1] https://lore.kernel.org/bpf/629bc069dd807d7ac646f836e9dca28bbc1108e2.camel@mailbox.tu-berlin.de/

    Fixes: 8f50f16ff39d ("selftests/bpf: Extend verifier and bpf_sock tests for dst_port loads")
    Signed-off-by: Jörn-Thorben Hinz <jthinz@mailbox.tu-berlin.de>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Reviewed-by: Jakub Sitnicki <jakub@cloudflare.com>
    Reviewed-by: Martin KaFai Lau <kafai@fb.com>
    Acked-by: John Fastabend <john.fastabend@gmail.com>
    Link: https://lore.kernel.org/bpf/20220621070116.307221-1-jthinz@mailbox.tu-berlin.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/testing/selftests/bpf/prog_tests/sock_fields.c | 1 -
    1 file changed, 1 deletion(-)

    diff --git a/tools/testing/selftests/bpf/prog_tests/sock_fields.c b/tools/testing/selftests/bpf/prog_tests/sock_fields.c
    index 9d211b5c22c4..7d23166c77af 100644
    --- a/tools/testing/selftests/bpf/prog_tests/sock_fields.c
    +++ b/tools/testing/selftests/bpf/prog_tests/sock_fields.c
    @@ -394,7 +394,6 @@ void serial_test_sock_fields(void)
    test();

    done:
    - test_sock_fields__detach(skel);
    test_sock_fields__destroy(skel);
    if (child_cg_fd >= 0)
    close(child_cg_fd);
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-08-15 23:09    [W:2.853 / U:0.208 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site