mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 14:53:58 -04:00
selftests/bpf: Add test case for different expected_attach_type
Add a small test case which adds two programs - one calling the other through a tailcall - and check that BPF rejects them in case of different expected_attach_type values: # ./vmtest.sh -- ./test_progs -t xdp_devmap [...] #641/1 xdp_devmap_attach/DEVMAP with programs in entries:OK #641/2 xdp_devmap_attach/DEVMAP with frags programs in entries:OK #641/3 xdp_devmap_attach/Verifier check of DEVMAP programs:OK #641/4 xdp_devmap_attach/DEVMAP with programs in entries on veth:OK #641 xdp_devmap_attach:OK Summary: 2/4 PASSED, 0 SKIPPED, 0 FAILED Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Link: https://lore.kernel.org/r/20250926171201.188490-2-daniel@iogearbox.net Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
committed by
Alexei Starovoitov
parent
4540aed51b
commit
0e8e60e86c
@@ -7,6 +7,7 @@
|
||||
#include <test_progs.h>
|
||||
|
||||
#include "test_xdp_devmap_helpers.skel.h"
|
||||
#include "test_xdp_devmap_tailcall.skel.h"
|
||||
#include "test_xdp_with_devmap_frags_helpers.skel.h"
|
||||
#include "test_xdp_with_devmap_helpers.skel.h"
|
||||
|
||||
@@ -107,6 +108,29 @@ static void test_neg_xdp_devmap_helpers(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void test_xdp_devmap_tailcall(enum bpf_attach_type prog_dev,
|
||||
enum bpf_attach_type prog_tail,
|
||||
bool expect_reject)
|
||||
{
|
||||
struct test_xdp_devmap_tailcall *skel;
|
||||
int err;
|
||||
|
||||
skel = test_xdp_devmap_tailcall__open();
|
||||
if (!ASSERT_OK_PTR(skel, "test_xdp_devmap_tailcall__open"))
|
||||
return;
|
||||
|
||||
bpf_program__set_expected_attach_type(skel->progs.xdp_devmap, prog_dev);
|
||||
bpf_program__set_expected_attach_type(skel->progs.xdp_entry, prog_tail);
|
||||
|
||||
err = test_xdp_devmap_tailcall__load(skel);
|
||||
if (expect_reject)
|
||||
ASSERT_ERR(err, "test_xdp_devmap_tailcall__load");
|
||||
else
|
||||
ASSERT_OK(err, "test_xdp_devmap_tailcall__load");
|
||||
|
||||
test_xdp_devmap_tailcall__destroy(skel);
|
||||
}
|
||||
|
||||
static void test_xdp_with_devmap_frags_helpers(void)
|
||||
{
|
||||
struct test_xdp_with_devmap_frags_helpers *skel;
|
||||
@@ -238,8 +262,13 @@ void serial_test_xdp_devmap_attach(void)
|
||||
if (test__start_subtest("DEVMAP with frags programs in entries"))
|
||||
test_xdp_with_devmap_frags_helpers();
|
||||
|
||||
if (test__start_subtest("Verifier check of DEVMAP programs"))
|
||||
if (test__start_subtest("Verifier check of DEVMAP programs")) {
|
||||
test_neg_xdp_devmap_helpers();
|
||||
test_xdp_devmap_tailcall(BPF_XDP_DEVMAP, BPF_XDP_DEVMAP, false);
|
||||
test_xdp_devmap_tailcall(0, 0, true);
|
||||
test_xdp_devmap_tailcall(BPF_XDP_DEVMAP, 0, true);
|
||||
test_xdp_devmap_tailcall(0, BPF_XDP_DEVMAP, true);
|
||||
}
|
||||
|
||||
if (test__start_subtest("DEVMAP with programs in entries on veth"))
|
||||
test_xdp_with_devmap_helpers_veth();
|
||||
|
||||
Reference in New Issue
Block a user