tools/testing/selftests/bpf/verifier/direct_value_access.c

Source file repositories/reference/linux-study-clean/tools/testing/selftests/bpf/verifier/direct_value_access.c

File Facts

System
Linux kernel
Corpus path
tools/testing/selftests/bpf/verifier/direct_value_access.c
Extension
.c
Size
8424 bytes
Lines
351
Domain
Support Tooling And Documentation
Bucket
tools
Inferred role
Support Tooling And Documentation: implementation source
Status
source implementation candidate

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

{
	"direct map access, write test 1",
	.insns = {
	BPF_MOV64_IMM(BPF_REG_0, 1),
	BPF_LD_MAP_VALUE(BPF_REG_1, 0, 0),
	BPF_ST_MEM(BPF_DW, BPF_REG_1, 0, 4242),
	BPF_EXIT_INSN(),
	},
	.fixup_map_array_48b = { 1 },
	.result = ACCEPT,
	.retval = 1,
},
{
	"direct map access, write test 2",
	.insns = {
	BPF_MOV64_IMM(BPF_REG_0, 1),
	BPF_LD_MAP_VALUE(BPF_REG_1, 0, 8),
	BPF_ST_MEM(BPF_DW, BPF_REG_1, 0, 4242),
	BPF_EXIT_INSN(),
	},
	.fixup_map_array_48b = { 1 },
	.result = ACCEPT,
	.retval = 1,
},
{
	"direct map access, write test 3",
	.insns = {
	BPF_MOV64_IMM(BPF_REG_0, 1),
	BPF_LD_MAP_VALUE(BPF_REG_1, 0, 8),
	BPF_ST_MEM(BPF_DW, BPF_REG_1, 8, 4242),
	BPF_EXIT_INSN(),
	},
	.fixup_map_array_48b = { 1 },
	.result = ACCEPT,
	.retval = 1,
},
{
	"direct map access, write test 4",
	.insns = {
	BPF_MOV64_IMM(BPF_REG_0, 1),
	BPF_LD_MAP_VALUE(BPF_REG_1, 0, 40),
	BPF_ST_MEM(BPF_DW, BPF_REG_1, 0, 4242),
	BPF_EXIT_INSN(),
	},
	.fixup_map_array_48b = { 1 },
	.result = ACCEPT,
	.retval = 1,
},
{
	"direct map access, write test 5",
	.insns = {
	BPF_MOV64_IMM(BPF_REG_0, 1),
	BPF_LD_MAP_VALUE(BPF_REG_1, 0, 32),
	BPF_ST_MEM(BPF_DW, BPF_REG_1, 8, 4242),
	BPF_EXIT_INSN(),
	},
	.fixup_map_array_48b = { 1 },
	.result = ACCEPT,
	.retval = 1,
},
{
	"direct map access, write test 6",
	.insns = {
	BPF_MOV64_IMM(BPF_REG_0, 1),
	BPF_LD_MAP_VALUE(BPF_REG_1, 0, 40),
	BPF_ST_MEM(BPF_DW, BPF_REG_1, 4, 4242),
	BPF_EXIT_INSN(),
	},
	.fixup_map_array_48b = { 1 },
	.result = REJECT,
	.errstr = "R1 min value is outside of the allowed memory range",
	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
},
{
	"direct map access, write test 7",
	.insns = {
	BPF_MOV64_IMM(BPF_REG_0, 1),
	BPF_LD_MAP_VALUE(BPF_REG_1, 0, -1),
	BPF_ST_MEM(BPF_DW, BPF_REG_1, 4, 4242),
	BPF_EXIT_INSN(),
	},
	.fixup_map_array_48b = { 1 },
	.result = REJECT,
	.errstr = "invalid access to map value pointer, value_size=48 off=4294967295",
},
{
	"direct map access, write test 8",
	.insns = {
	BPF_MOV64_IMM(BPF_REG_0, 1),
	BPF_LD_MAP_VALUE(BPF_REG_1, 0, 1),

Annotation

Implementation Notes