mirror of
https://github.com/torvalds/linux.git
synced 2024-11-12 23:23:03 +00:00
selftests/bpf: Add test for __nullable suffix in tp_btf
Add a tracepoint with __nullable suffix in bpf_testmod, and add cases for it: $ ./test_progs -t "tp_btf_nullable" #406/1 tp_btf_nullable/handle_tp_btf_nullable_bare1:OK #406/2 tp_btf_nullable/handle_tp_btf_nullable_bare2:OK #406 tp_btf_nullable:OK Summary: 1/2 PASSED, 0 SKIPPED, 0 FAILED Signed-off-by: Philo Lu <lulie@linux.alibaba.com> Link: https://lore.kernel.org/r/20240911033719.91468-3-lulie@linux.alibaba.com Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
This commit is contained in:
parent
8aeaed21be
commit
2060f07f86
@ -34,6 +34,12 @@ DECLARE_TRACE(bpf_testmod_test_write_bare,
|
||||
TP_ARGS(task, ctx)
|
||||
);
|
||||
|
||||
/* Used in bpf_testmod_test_read() to test __nullable suffix */
|
||||
DECLARE_TRACE(bpf_testmod_test_nullable_bare,
|
||||
TP_PROTO(struct bpf_testmod_test_read_ctx *ctx__nullable),
|
||||
TP_ARGS(ctx__nullable)
|
||||
);
|
||||
|
||||
#undef BPF_TESTMOD_DECLARE_TRACE
|
||||
#ifdef DECLARE_TRACE_WRITABLE
|
||||
#define BPF_TESTMOD_DECLARE_TRACE(call, proto, args, size) \
|
||||
|
@ -356,6 +356,8 @@ bpf_testmod_test_read(struct file *file, struct kobject *kobj,
|
||||
if (bpf_testmod_loop_test(101) > 100)
|
||||
trace_bpf_testmod_test_read(current, &ctx);
|
||||
|
||||
trace_bpf_testmod_test_nullable_bare(NULL);
|
||||
|
||||
/* Magic number to enable writable tp */
|
||||
if (len == 64) {
|
||||
struct bpf_testmod_test_writable_ctx writable = {
|
||||
|
14
tools/testing/selftests/bpf/prog_tests/tp_btf_nullable.c
Normal file
14
tools/testing/selftests/bpf/prog_tests/tp_btf_nullable.c
Normal file
@ -0,0 +1,14 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
#include <test_progs.h>
|
||||
#include "test_tp_btf_nullable.skel.h"
|
||||
|
||||
void test_tp_btf_nullable(void)
|
||||
{
|
||||
if (!env.has_testmod) {
|
||||
test__skip();
|
||||
return;
|
||||
}
|
||||
|
||||
RUN_TESTS(test_tp_btf_nullable);
|
||||
}
|
24
tools/testing/selftests/bpf/progs/test_tp_btf_nullable.c
Normal file
24
tools/testing/selftests/bpf/progs/test_tp_btf_nullable.c
Normal file
@ -0,0 +1,24 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
#include "vmlinux.h"
|
||||
#include <bpf/bpf_helpers.h>
|
||||
#include <bpf/bpf_tracing.h>
|
||||
#include "../bpf_testmod/bpf_testmod.h"
|
||||
#include "bpf_misc.h"
|
||||
|
||||
SEC("tp_btf/bpf_testmod_test_nullable_bare")
|
||||
__failure __msg("R1 invalid mem access 'trusted_ptr_or_null_'")
|
||||
int BPF_PROG(handle_tp_btf_nullable_bare1, struct bpf_testmod_test_read_ctx *nullable_ctx)
|
||||
{
|
||||
return nullable_ctx->len;
|
||||
}
|
||||
|
||||
SEC("tp_btf/bpf_testmod_test_nullable_bare")
|
||||
int BPF_PROG(handle_tp_btf_nullable_bare2, struct bpf_testmod_test_read_ctx *nullable_ctx)
|
||||
{
|
||||
if (nullable_ctx)
|
||||
return nullable_ctx->len;
|
||||
return 0;
|
||||
}
|
||||
|
||||
char _license[] SEC("license") = "GPL";
|
Loading…
Reference in New Issue
Block a user