Skip to content

Commit b1fa1c7

Browse files
AsphalttKernel Patches Daemon
authored andcommitted
selftests/bpf: Add case to test freplace attach failure log
Test the new libbpf API 'bpf_program__attach_freplace_log()': cd tools/testing/selftests/bpf/ ./test_progs -t tracing_failure/freplace_attach_log #468/3 tracing_failure/freplace_attach_log:OK #468 tracing_failure:OK Summary: 1/1 PASSED, 0 SKIPPED, 0 FAILED Signed-off-by: Leon Hwang <[email protected]>
1 parent 7eaefbd commit b1fa1c7

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

tools/testing/selftests/bpf/prog_tests/tracing_failure.c

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
/* Copyright (c) 2024 Meta Platforms, Inc. and affiliates. */
33
#include <test_progs.h>
44
#include "tracing_failure.skel.h"
5+
#include "tailcall_bpf2bpf1.skel.h"
6+
#include "freplace_global_func.skel.h"
57

68
static void test_bpf_spin_lock(bool is_spin_lock)
79
{
@@ -28,10 +30,51 @@ static void test_bpf_spin_lock(bool is_spin_lock)
2830
tracing_failure__destroy(skel);
2931
}
3032

33+
static void test_freplace_attach_log(void)
34+
{
35+
struct freplace_global_func *freplace_skel = NULL;
36+
struct tailcall_bpf2bpf1 *tailcall_skel = NULL;
37+
struct bpf_link *freplace_link = NULL;
38+
struct bpf_program *prog;
39+
char log_buf[64];
40+
int err, prog_fd;
41+
42+
tailcall_skel = tailcall_bpf2bpf1__open_and_load();
43+
if (!ASSERT_OK_PTR(tailcall_skel, "tailcall_bpf2bpf1__open_and_load"))
44+
return;
45+
46+
freplace_skel = freplace_global_func__open();
47+
if (!ASSERT_OK_PTR(freplace_skel, "freplace_global_func__open"))
48+
goto out;
49+
50+
prog = freplace_skel->progs.new_test_pkt_access;
51+
prog_fd = bpf_program__fd(tailcall_skel->progs.entry);
52+
err = bpf_program__set_attach_target(prog, prog_fd, "entry");
53+
if (!ASSERT_OK(err, "bpf_program__set_attach_target"))
54+
goto out;
55+
56+
err = freplace_global_func__load(freplace_skel);
57+
if (!ASSERT_OK(err, "freplace_global_func__load"))
58+
goto out;
59+
60+
log_buf[0] = '\0';
61+
freplace_link = bpf_program__attach_freplace_log(prog, prog_fd, "subprog_tail", log_buf,
62+
sizeof(log_buf));
63+
ASSERT_ERR_PTR(freplace_link, "bpf_program__attach_freplace_log");
64+
ASSERT_STREQ(log_buf, "subprog_tail() is not a global function\n", "log_buf");
65+
66+
out:
67+
bpf_link__destroy(freplace_link);
68+
freplace_global_func__destroy(freplace_skel);
69+
tailcall_bpf2bpf1__destroy(tailcall_skel);
70+
}
71+
3172
void test_tracing_failure(void)
3273
{
3374
if (test__start_subtest("bpf_spin_lock"))
3475
test_bpf_spin_lock(true);
3576
if (test__start_subtest("bpf_spin_unlock"))
3677
test_bpf_spin_lock(false);
78+
if (test__start_subtest("freplace_attach_log"))
79+
test_freplace_attach_log();
3780
}

0 commit comments

Comments
 (0)