File Index
Files and directories
Sign in
FILE

ld_imm64.c

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/bpf/verifier/ld_imm64.c C
  1{
  2	"test1 ld_imm64",
  3	.insns = {
  4	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1),
  5	BPF_LD_IMM64(BPF_REG_0, 0),
  6	BPF_LD_IMM64(BPF_REG_0, 0),
  7	BPF_LD_IMM64(BPF_REG_0, 1),
  8	BPF_LD_IMM64(BPF_REG_0, 1),
  9	BPF_MOV64_IMM(BPF_REG_0, 2),
 10	BPF_EXIT_INSN(),
 11	},
 12	.errstr = "jump into the middle of ldimm64 insn 1",
 13	.errstr_unpriv = "jump into the middle of ldimm64 insn 1",
 14	.result = REJECT,
 15},
 16{
 17	"test2 ld_imm64",
 18	.insns = {
 19	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1),
 20	BPF_LD_IMM64(BPF_REG_0, 0),
 21	BPF_LD_IMM64(BPF_REG_0, 0),
 22	BPF_LD_IMM64(BPF_REG_0, 1),
 23	BPF_LD_IMM64(BPF_REG_0, 1),
 24	BPF_EXIT_INSN(),
 25	},
 26	.errstr = "jump into the middle of ldimm64 insn 1",
 27	.errstr_unpriv = "jump into the middle of ldimm64 insn 1",
 28	.result = REJECT,
 29},
 30{
 31	"test3 ld_imm64",
 32	.insns = {
 33	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1),
 34	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0),
 35	BPF_LD_IMM64(BPF_REG_0, 0),
 36	BPF_LD_IMM64(BPF_REG_0, 0),
 37	BPF_LD_IMM64(BPF_REG_0, 1),
 38	BPF_LD_IMM64(BPF_REG_0, 1),
 39	BPF_EXIT_INSN(),
 40	},
 41	.errstr = "invalid bpf_ld_imm64 insn",
 42	.result = REJECT,
 43},
 44{
 45	"test4 ld_imm64",
 46	.insns = {
 47	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0),
 48	BPF_EXIT_INSN(),
 49	},
 50	.errstr = "invalid bpf_ld_imm64 insn",
 51	.result = REJECT,
 52},
 53{
 54	"test6 ld_imm64",
 55	.insns = {
 56	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0),
 57	BPF_RAW_INSN(0, 0, 0, 0, 0),
 58	BPF_EXIT_INSN(),
 59	},
 60	.result = ACCEPT,
 61},
 62{
 63	"test7 ld_imm64",
 64	.insns = {
 65	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1),
 66	BPF_RAW_INSN(0, 0, 0, 0, 1),
 67	BPF_EXIT_INSN(),
 68	},
 69	.result = ACCEPT,
 70	.retval = 1,
 71},
 72{
 73	"test8 ld_imm64",
 74	.insns = {
 75	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 1, 1),
 76	BPF_RAW_INSN(0, 0, 0, 0, 1),
 77	BPF_EXIT_INSN(),
 78	},
 79	.errstr = "uses reserved fields",
 80	.result = REJECT,
 81},
 82{
 83	"test9 ld_imm64",
 84	.insns = {
 85	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1),
 86	BPF_RAW_INSN(0, 0, 0, 1, 1),
 87	BPF_EXIT_INSN(),
 88	},
 89	.errstr = "invalid bpf_ld_imm64 insn",
 90	.result = REJECT,
 91},
 92{
 93	"test10 ld_imm64",
 94	.insns = {
 95	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1),
 96	BPF_RAW_INSN(0, BPF_REG_1, 0, 0, 1),
 97	BPF_EXIT_INSN(),
 98	},
 99	.errstr = "invalid bpf_ld_imm64 insn",
100	.result = REJECT,
101},
102{
103	"test11 ld_imm64",
104	.insns = {
105	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1),
106	BPF_RAW_INSN(0, 0, BPF_REG_1, 0, 1),
107	BPF_EXIT_INSN(),
108	},
109	.errstr = "invalid bpf_ld_imm64 insn",
110	.result = REJECT,
111},
112{
113	"test12 ld_imm64",
114	.insns = {
115	BPF_MOV64_IMM(BPF_REG_1, 0),
116	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, BPF_REG_1, 0, 1),
117	BPF_RAW_INSN(0, 0, 0, 0, 0),
118	BPF_EXIT_INSN(),
119	},
120	.errstr = "not pointing to valid bpf_map",
121	.result = REJECT,
122},
123{
124	"test13 ld_imm64",
125	.insns = {
126	BPF_MOV64_IMM(BPF_REG_1, 0),
127	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, BPF_REG_1, 0, 1),
128	BPF_RAW_INSN(0, 0, BPF_REG_1, 0, 1),
129	BPF_EXIT_INSN(),
130	},
131	.errstr = "invalid bpf_ld_imm64 insn",
132	.result = REJECT,
133},
134{
135	"test14 ld_imm64: reject 2nd imm != 0",
136	.insns = {
137	BPF_MOV64_IMM(BPF_REG_0, 0),
138	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, BPF_REG_1,
139		     BPF_PSEUDO_MAP_FD, 0, 0),
140	BPF_RAW_INSN(0, 0, 0, 0, 0xfefefe),
141	BPF_EXIT_INSN(),
142	},
143	.fixup_map_hash_48b = { 1 },
144	.errstr = "unrecognized bpf_ld_imm64 insn",
145	.result = REJECT,
146},
~/ Read-only file preview.