18c2ecf20Sopenharmony_ci{
28c2ecf20Sopenharmony_ci	"unpriv: return pointer",
38c2ecf20Sopenharmony_ci	.insns = {
48c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_0, BPF_REG_10),
58c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
68c2ecf20Sopenharmony_ci	},
78c2ecf20Sopenharmony_ci	.result = ACCEPT,
88c2ecf20Sopenharmony_ci	.result_unpriv = REJECT,
98c2ecf20Sopenharmony_ci	.errstr_unpriv = "R0 leaks addr",
108c2ecf20Sopenharmony_ci	.retval = POINTER_VALUE,
118c2ecf20Sopenharmony_ci},
128c2ecf20Sopenharmony_ci{
138c2ecf20Sopenharmony_ci	"unpriv: add const to pointer",
148c2ecf20Sopenharmony_ci	.insns = {
158c2ecf20Sopenharmony_ci	BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, 8),
168c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
178c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
188c2ecf20Sopenharmony_ci	},
198c2ecf20Sopenharmony_ci	.result = ACCEPT,
208c2ecf20Sopenharmony_ci},
218c2ecf20Sopenharmony_ci{
228c2ecf20Sopenharmony_ci	"unpriv: add pointer to pointer",
238c2ecf20Sopenharmony_ci	.insns = {
248c2ecf20Sopenharmony_ci	BPF_ALU64_REG(BPF_ADD, BPF_REG_1, BPF_REG_10),
258c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
268c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
278c2ecf20Sopenharmony_ci	},
288c2ecf20Sopenharmony_ci	.result = REJECT,
298c2ecf20Sopenharmony_ci	.errstr = "R1 pointer += pointer",
308c2ecf20Sopenharmony_ci},
318c2ecf20Sopenharmony_ci{
328c2ecf20Sopenharmony_ci	"unpriv: neg pointer",
338c2ecf20Sopenharmony_ci	.insns = {
348c2ecf20Sopenharmony_ci	BPF_ALU64_IMM(BPF_NEG, BPF_REG_1, 0),
358c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
368c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
378c2ecf20Sopenharmony_ci	},
388c2ecf20Sopenharmony_ci	.result = ACCEPT,
398c2ecf20Sopenharmony_ci	.result_unpriv = REJECT,
408c2ecf20Sopenharmony_ci	.errstr_unpriv = "R1 pointer arithmetic",
418c2ecf20Sopenharmony_ci},
428c2ecf20Sopenharmony_ci{
438c2ecf20Sopenharmony_ci	"unpriv: cmp pointer with const",
448c2ecf20Sopenharmony_ci	.insns = {
458c2ecf20Sopenharmony_ci	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 0),
468c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
478c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
488c2ecf20Sopenharmony_ci	},
498c2ecf20Sopenharmony_ci	.result = ACCEPT,
508c2ecf20Sopenharmony_ci	.result_unpriv = REJECT,
518c2ecf20Sopenharmony_ci	.errstr_unpriv = "R1 pointer comparison",
528c2ecf20Sopenharmony_ci},
538c2ecf20Sopenharmony_ci{
548c2ecf20Sopenharmony_ci	"unpriv: cmp pointer with pointer",
558c2ecf20Sopenharmony_ci	.insns = {
568c2ecf20Sopenharmony_ci	BPF_JMP_REG(BPF_JEQ, BPF_REG_1, BPF_REG_10, 0),
578c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
588c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
598c2ecf20Sopenharmony_ci	},
608c2ecf20Sopenharmony_ci	.result = ACCEPT,
618c2ecf20Sopenharmony_ci	.result_unpriv = REJECT,
628c2ecf20Sopenharmony_ci	.errstr_unpriv = "R10 pointer comparison",
638c2ecf20Sopenharmony_ci},
648c2ecf20Sopenharmony_ci{
658c2ecf20Sopenharmony_ci	"unpriv: check that printk is disallowed",
668c2ecf20Sopenharmony_ci	.insns = {
678c2ecf20Sopenharmony_ci	BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
688c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_1, BPF_REG_10),
698c2ecf20Sopenharmony_ci	BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, -8),
708c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_2, 8),
718c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_3, BPF_REG_1),
728c2ecf20Sopenharmony_ci	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_trace_printk),
738c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
748c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
758c2ecf20Sopenharmony_ci	},
768c2ecf20Sopenharmony_ci	.errstr_unpriv = "unknown func bpf_trace_printk#6",
778c2ecf20Sopenharmony_ci	.result_unpriv = REJECT,
788c2ecf20Sopenharmony_ci	.result = ACCEPT,
798c2ecf20Sopenharmony_ci	.prog_type = BPF_PROG_TYPE_TRACEPOINT,
808c2ecf20Sopenharmony_ci},
818c2ecf20Sopenharmony_ci{
828c2ecf20Sopenharmony_ci	"unpriv: pass pointer to helper function",
838c2ecf20Sopenharmony_ci	.insns = {
848c2ecf20Sopenharmony_ci	BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
858c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
868c2ecf20Sopenharmony_ci	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
878c2ecf20Sopenharmony_ci	BPF_LD_MAP_FD(BPF_REG_1, 0),
888c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_3, BPF_REG_2),
898c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_4, BPF_REG_2),
908c2ecf20Sopenharmony_ci	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_update_elem),
918c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
928c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
938c2ecf20Sopenharmony_ci	},
948c2ecf20Sopenharmony_ci	.fixup_map_hash_8b = { 3 },
958c2ecf20Sopenharmony_ci	.errstr_unpriv = "R4 leaks addr",
968c2ecf20Sopenharmony_ci	.result_unpriv = REJECT,
978c2ecf20Sopenharmony_ci	.result = ACCEPT,
988c2ecf20Sopenharmony_ci},
998c2ecf20Sopenharmony_ci{
1008c2ecf20Sopenharmony_ci	"unpriv: indirectly pass pointer on stack to helper function",
1018c2ecf20Sopenharmony_ci	.insns = {
1028c2ecf20Sopenharmony_ci	BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_10, -8),
1038c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
1048c2ecf20Sopenharmony_ci	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
1058c2ecf20Sopenharmony_ci	BPF_LD_MAP_FD(BPF_REG_1, 0),
1068c2ecf20Sopenharmony_ci	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
1078c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
1088c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
1098c2ecf20Sopenharmony_ci	},
1108c2ecf20Sopenharmony_ci	.fixup_map_hash_8b = { 3 },
1118c2ecf20Sopenharmony_ci	.errstr_unpriv = "invalid indirect read from stack R2 off -8+0 size 8",
1128c2ecf20Sopenharmony_ci	.result_unpriv = REJECT,
1138c2ecf20Sopenharmony_ci	.result = ACCEPT,
1148c2ecf20Sopenharmony_ci},
1158c2ecf20Sopenharmony_ci{
1168c2ecf20Sopenharmony_ci	"unpriv: mangle pointer on stack 1",
1178c2ecf20Sopenharmony_ci	.insns = {
1188c2ecf20Sopenharmony_ci	BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_10, -8),
1198c2ecf20Sopenharmony_ci	BPF_ST_MEM(BPF_W, BPF_REG_10, -8, 0),
1208c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
1218c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
1228c2ecf20Sopenharmony_ci	},
1238c2ecf20Sopenharmony_ci	.errstr_unpriv = "attempt to corrupt spilled",
1248c2ecf20Sopenharmony_ci	.result_unpriv = REJECT,
1258c2ecf20Sopenharmony_ci	.result = ACCEPT,
1268c2ecf20Sopenharmony_ci},
1278c2ecf20Sopenharmony_ci{
1288c2ecf20Sopenharmony_ci	"unpriv: mangle pointer on stack 2",
1298c2ecf20Sopenharmony_ci	.insns = {
1308c2ecf20Sopenharmony_ci	BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_10, -8),
1318c2ecf20Sopenharmony_ci	BPF_ST_MEM(BPF_B, BPF_REG_10, -1, 0),
1328c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
1338c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
1348c2ecf20Sopenharmony_ci	},
1358c2ecf20Sopenharmony_ci	.errstr_unpriv = "attempt to corrupt spilled",
1368c2ecf20Sopenharmony_ci	.result_unpriv = REJECT,
1378c2ecf20Sopenharmony_ci	.result = ACCEPT,
1388c2ecf20Sopenharmony_ci},
1398c2ecf20Sopenharmony_ci{
1408c2ecf20Sopenharmony_ci	"unpriv: read pointer from stack in small chunks",
1418c2ecf20Sopenharmony_ci	.insns = {
1428c2ecf20Sopenharmony_ci	BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_10, -8),
1438c2ecf20Sopenharmony_ci	BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_10, -8),
1448c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
1458c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
1468c2ecf20Sopenharmony_ci	},
1478c2ecf20Sopenharmony_ci	.errstr = "invalid size",
1488c2ecf20Sopenharmony_ci	.result = REJECT,
1498c2ecf20Sopenharmony_ci},
1508c2ecf20Sopenharmony_ci{
1518c2ecf20Sopenharmony_ci	"unpriv: write pointer into ctx",
1528c2ecf20Sopenharmony_ci	.insns = {
1538c2ecf20Sopenharmony_ci	BPF_STX_MEM(BPF_DW, BPF_REG_1, BPF_REG_1, 0),
1548c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
1558c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
1568c2ecf20Sopenharmony_ci	},
1578c2ecf20Sopenharmony_ci	.errstr_unpriv = "R1 leaks addr",
1588c2ecf20Sopenharmony_ci	.result_unpriv = REJECT,
1598c2ecf20Sopenharmony_ci	.errstr = "invalid bpf_context access",
1608c2ecf20Sopenharmony_ci	.result = REJECT,
1618c2ecf20Sopenharmony_ci},
1628c2ecf20Sopenharmony_ci{
1638c2ecf20Sopenharmony_ci	"unpriv: spill/fill of ctx",
1648c2ecf20Sopenharmony_ci	.insns = {
1658c2ecf20Sopenharmony_ci	BPF_ALU64_REG(BPF_MOV, BPF_REG_6, BPF_REG_10),
1668c2ecf20Sopenharmony_ci	BPF_ALU64_IMM(BPF_ADD, BPF_REG_6, -8),
1678c2ecf20Sopenharmony_ci	BPF_STX_MEM(BPF_DW, BPF_REG_6, BPF_REG_1, 0),
1688c2ecf20Sopenharmony_ci	BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_6, 0),
1698c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
1708c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
1718c2ecf20Sopenharmony_ci	},
1728c2ecf20Sopenharmony_ci	.result = ACCEPT,
1738c2ecf20Sopenharmony_ci},
1748c2ecf20Sopenharmony_ci{
1758c2ecf20Sopenharmony_ci	"unpriv: spill/fill of ctx 2",
1768c2ecf20Sopenharmony_ci	.insns = {
1778c2ecf20Sopenharmony_ci	BPF_ALU64_REG(BPF_MOV, BPF_REG_6, BPF_REG_10),
1788c2ecf20Sopenharmony_ci	BPF_ALU64_IMM(BPF_ADD, BPF_REG_6, -8),
1798c2ecf20Sopenharmony_ci	BPF_STX_MEM(BPF_DW, BPF_REG_6, BPF_REG_1, 0),
1808c2ecf20Sopenharmony_ci	BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_6, 0),
1818c2ecf20Sopenharmony_ci	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_hash_recalc),
1828c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
1838c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
1848c2ecf20Sopenharmony_ci	},
1858c2ecf20Sopenharmony_ci	.result = ACCEPT,
1868c2ecf20Sopenharmony_ci	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
1878c2ecf20Sopenharmony_ci},
1888c2ecf20Sopenharmony_ci{
1898c2ecf20Sopenharmony_ci	"unpriv: spill/fill of ctx 3",
1908c2ecf20Sopenharmony_ci	.insns = {
1918c2ecf20Sopenharmony_ci	BPF_ALU64_REG(BPF_MOV, BPF_REG_6, BPF_REG_10),
1928c2ecf20Sopenharmony_ci	BPF_ALU64_IMM(BPF_ADD, BPF_REG_6, -8),
1938c2ecf20Sopenharmony_ci	BPF_STX_MEM(BPF_DW, BPF_REG_6, BPF_REG_1, 0),
1948c2ecf20Sopenharmony_ci	BPF_STX_MEM(BPF_DW, BPF_REG_6, BPF_REG_10, 0),
1958c2ecf20Sopenharmony_ci	BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_6, 0),
1968c2ecf20Sopenharmony_ci	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_hash_recalc),
1978c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
1988c2ecf20Sopenharmony_ci	},
1998c2ecf20Sopenharmony_ci	.result = REJECT,
2008c2ecf20Sopenharmony_ci	.errstr = "R1 type=fp expected=ctx",
2018c2ecf20Sopenharmony_ci	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
2028c2ecf20Sopenharmony_ci},
2038c2ecf20Sopenharmony_ci{
2048c2ecf20Sopenharmony_ci	"unpriv: spill/fill of ctx 4",
2058c2ecf20Sopenharmony_ci	.insns = {
2068c2ecf20Sopenharmony_ci	BPF_ALU64_REG(BPF_MOV, BPF_REG_6, BPF_REG_10),
2078c2ecf20Sopenharmony_ci	BPF_ALU64_IMM(BPF_ADD, BPF_REG_6, -8),
2088c2ecf20Sopenharmony_ci	BPF_STX_MEM(BPF_DW, BPF_REG_6, BPF_REG_1, 0),
2098c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 1),
2108c2ecf20Sopenharmony_ci	BPF_RAW_INSN(BPF_STX | BPF_XADD | BPF_DW, BPF_REG_10, BPF_REG_0, -8, 0),
2118c2ecf20Sopenharmony_ci	BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_6, 0),
2128c2ecf20Sopenharmony_ci	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_hash_recalc),
2138c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
2148c2ecf20Sopenharmony_ci	},
2158c2ecf20Sopenharmony_ci	.result = REJECT,
2168c2ecf20Sopenharmony_ci	.errstr = "R1 type=inv expected=ctx",
2178c2ecf20Sopenharmony_ci	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
2188c2ecf20Sopenharmony_ci},
2198c2ecf20Sopenharmony_ci{
2208c2ecf20Sopenharmony_ci	"unpriv: spill/fill of different pointers stx",
2218c2ecf20Sopenharmony_ci	.insns = {
2228c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_3, 42),
2238c2ecf20Sopenharmony_ci	BPF_ALU64_REG(BPF_MOV, BPF_REG_6, BPF_REG_10),
2248c2ecf20Sopenharmony_ci	BPF_ALU64_IMM(BPF_ADD, BPF_REG_6, -8),
2258c2ecf20Sopenharmony_ci	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 3),
2268c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
2278c2ecf20Sopenharmony_ci	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -16),
2288c2ecf20Sopenharmony_ci	BPF_STX_MEM(BPF_DW, BPF_REG_6, BPF_REG_2, 0),
2298c2ecf20Sopenharmony_ci	BPF_JMP_IMM(BPF_JNE, BPF_REG_1, 0, 1),
2308c2ecf20Sopenharmony_ci	BPF_STX_MEM(BPF_DW, BPF_REG_6, BPF_REG_1, 0),
2318c2ecf20Sopenharmony_ci	BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_6, 0),
2328c2ecf20Sopenharmony_ci	BPF_STX_MEM(BPF_W, BPF_REG_1, BPF_REG_3,
2338c2ecf20Sopenharmony_ci		    offsetof(struct __sk_buff, mark)),
2348c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
2358c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
2368c2ecf20Sopenharmony_ci	},
2378c2ecf20Sopenharmony_ci	.result = REJECT,
2388c2ecf20Sopenharmony_ci	.errstr = "same insn cannot be used with different pointers",
2398c2ecf20Sopenharmony_ci	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
2408c2ecf20Sopenharmony_ci},
2418c2ecf20Sopenharmony_ci{
2428c2ecf20Sopenharmony_ci	"unpriv: spill/fill of different pointers stx - ctx and sock",
2438c2ecf20Sopenharmony_ci	.insns = {
2448c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_8, BPF_REG_1),
2458c2ecf20Sopenharmony_ci	/* struct bpf_sock *sock = bpf_sock_lookup(...); */
2468c2ecf20Sopenharmony_ci	BPF_SK_LOOKUP(sk_lookup_tcp),
2478c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_2, BPF_REG_0),
2488c2ecf20Sopenharmony_ci	/* u64 foo; */
2498c2ecf20Sopenharmony_ci	/* void *target = &foo; */
2508c2ecf20Sopenharmony_ci	BPF_ALU64_REG(BPF_MOV, BPF_REG_6, BPF_REG_10),
2518c2ecf20Sopenharmony_ci	BPF_ALU64_IMM(BPF_ADD, BPF_REG_6, -8),
2528c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_1, BPF_REG_8),
2538c2ecf20Sopenharmony_ci	/* if (skb == NULL) *target = sock; */
2548c2ecf20Sopenharmony_ci	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1),
2558c2ecf20Sopenharmony_ci		BPF_STX_MEM(BPF_DW, BPF_REG_6, BPF_REG_2, 0),
2568c2ecf20Sopenharmony_ci	/* else *target = skb; */
2578c2ecf20Sopenharmony_ci	BPF_JMP_IMM(BPF_JNE, BPF_REG_1, 0, 1),
2588c2ecf20Sopenharmony_ci		BPF_STX_MEM(BPF_DW, BPF_REG_6, BPF_REG_1, 0),
2598c2ecf20Sopenharmony_ci	/* struct __sk_buff *skb = *target; */
2608c2ecf20Sopenharmony_ci	BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_6, 0),
2618c2ecf20Sopenharmony_ci	/* skb->mark = 42; */
2628c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_3, 42),
2638c2ecf20Sopenharmony_ci	BPF_STX_MEM(BPF_W, BPF_REG_1, BPF_REG_3,
2648c2ecf20Sopenharmony_ci		    offsetof(struct __sk_buff, mark)),
2658c2ecf20Sopenharmony_ci	/* if (sk) bpf_sk_release(sk) */
2668c2ecf20Sopenharmony_ci	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1),
2678c2ecf20Sopenharmony_ci		BPF_EMIT_CALL(BPF_FUNC_sk_release),
2688c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
2698c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
2708c2ecf20Sopenharmony_ci	},
2718c2ecf20Sopenharmony_ci	.result = REJECT,
2728c2ecf20Sopenharmony_ci	.errstr = "type=ctx expected=sock",
2738c2ecf20Sopenharmony_ci	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
2748c2ecf20Sopenharmony_ci},
2758c2ecf20Sopenharmony_ci{
2768c2ecf20Sopenharmony_ci	"unpriv: spill/fill of different pointers stx - leak sock",
2778c2ecf20Sopenharmony_ci	.insns = {
2788c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_8, BPF_REG_1),
2798c2ecf20Sopenharmony_ci	/* struct bpf_sock *sock = bpf_sock_lookup(...); */
2808c2ecf20Sopenharmony_ci	BPF_SK_LOOKUP(sk_lookup_tcp),
2818c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_2, BPF_REG_0),
2828c2ecf20Sopenharmony_ci	/* u64 foo; */
2838c2ecf20Sopenharmony_ci	/* void *target = &foo; */
2848c2ecf20Sopenharmony_ci	BPF_ALU64_REG(BPF_MOV, BPF_REG_6, BPF_REG_10),
2858c2ecf20Sopenharmony_ci	BPF_ALU64_IMM(BPF_ADD, BPF_REG_6, -8),
2868c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_1, BPF_REG_8),
2878c2ecf20Sopenharmony_ci	/* if (skb == NULL) *target = sock; */
2888c2ecf20Sopenharmony_ci	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1),
2898c2ecf20Sopenharmony_ci		BPF_STX_MEM(BPF_DW, BPF_REG_6, BPF_REG_2, 0),
2908c2ecf20Sopenharmony_ci	/* else *target = skb; */
2918c2ecf20Sopenharmony_ci	BPF_JMP_IMM(BPF_JNE, BPF_REG_1, 0, 1),
2928c2ecf20Sopenharmony_ci		BPF_STX_MEM(BPF_DW, BPF_REG_6, BPF_REG_1, 0),
2938c2ecf20Sopenharmony_ci	/* struct __sk_buff *skb = *target; */
2948c2ecf20Sopenharmony_ci	BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_6, 0),
2958c2ecf20Sopenharmony_ci	/* skb->mark = 42; */
2968c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_3, 42),
2978c2ecf20Sopenharmony_ci	BPF_STX_MEM(BPF_W, BPF_REG_1, BPF_REG_3,
2988c2ecf20Sopenharmony_ci		    offsetof(struct __sk_buff, mark)),
2998c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
3008c2ecf20Sopenharmony_ci	},
3018c2ecf20Sopenharmony_ci	.result = REJECT,
3028c2ecf20Sopenharmony_ci	//.errstr = "same insn cannot be used with different pointers",
3038c2ecf20Sopenharmony_ci	.errstr = "Unreleased reference",
3048c2ecf20Sopenharmony_ci	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
3058c2ecf20Sopenharmony_ci},
3068c2ecf20Sopenharmony_ci{
3078c2ecf20Sopenharmony_ci	"unpriv: spill/fill of different pointers stx - sock and ctx (read)",
3088c2ecf20Sopenharmony_ci	.insns = {
3098c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_8, BPF_REG_1),
3108c2ecf20Sopenharmony_ci	/* struct bpf_sock *sock = bpf_sock_lookup(...); */
3118c2ecf20Sopenharmony_ci	BPF_SK_LOOKUP(sk_lookup_tcp),
3128c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_2, BPF_REG_0),
3138c2ecf20Sopenharmony_ci	/* u64 foo; */
3148c2ecf20Sopenharmony_ci	/* void *target = &foo; */
3158c2ecf20Sopenharmony_ci	BPF_ALU64_REG(BPF_MOV, BPF_REG_6, BPF_REG_10),
3168c2ecf20Sopenharmony_ci	BPF_ALU64_IMM(BPF_ADD, BPF_REG_6, -8),
3178c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_1, BPF_REG_8),
3188c2ecf20Sopenharmony_ci	/* if (skb) *target = skb */
3198c2ecf20Sopenharmony_ci	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1),
3208c2ecf20Sopenharmony_ci		BPF_STX_MEM(BPF_DW, BPF_REG_6, BPF_REG_1, 0),
3218c2ecf20Sopenharmony_ci	/* else *target = sock */
3228c2ecf20Sopenharmony_ci	BPF_JMP_IMM(BPF_JNE, BPF_REG_1, 0, 1),
3238c2ecf20Sopenharmony_ci		BPF_STX_MEM(BPF_DW, BPF_REG_6, BPF_REG_2, 0),
3248c2ecf20Sopenharmony_ci	/* struct bpf_sock *sk = *target; */
3258c2ecf20Sopenharmony_ci	BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_6, 0),
3268c2ecf20Sopenharmony_ci	/* if (sk) u32 foo = sk->mark; bpf_sk_release(sk); */
3278c2ecf20Sopenharmony_ci	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 2),
3288c2ecf20Sopenharmony_ci		BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1,
3298c2ecf20Sopenharmony_ci			    offsetof(struct bpf_sock, mark)),
3308c2ecf20Sopenharmony_ci		BPF_EMIT_CALL(BPF_FUNC_sk_release),
3318c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
3328c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
3338c2ecf20Sopenharmony_ci	},
3348c2ecf20Sopenharmony_ci	.result = REJECT,
3358c2ecf20Sopenharmony_ci	.errstr = "same insn cannot be used with different pointers",
3368c2ecf20Sopenharmony_ci	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
3378c2ecf20Sopenharmony_ci},
3388c2ecf20Sopenharmony_ci{
3398c2ecf20Sopenharmony_ci	"unpriv: spill/fill of different pointers stx - sock and ctx (write)",
3408c2ecf20Sopenharmony_ci	.insns = {
3418c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_8, BPF_REG_1),
3428c2ecf20Sopenharmony_ci	/* struct bpf_sock *sock = bpf_sock_lookup(...); */
3438c2ecf20Sopenharmony_ci	BPF_SK_LOOKUP(sk_lookup_tcp),
3448c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_2, BPF_REG_0),
3458c2ecf20Sopenharmony_ci	/* u64 foo; */
3468c2ecf20Sopenharmony_ci	/* void *target = &foo; */
3478c2ecf20Sopenharmony_ci	BPF_ALU64_REG(BPF_MOV, BPF_REG_6, BPF_REG_10),
3488c2ecf20Sopenharmony_ci	BPF_ALU64_IMM(BPF_ADD, BPF_REG_6, -8),
3498c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_1, BPF_REG_8),
3508c2ecf20Sopenharmony_ci	/* if (skb) *target = skb */
3518c2ecf20Sopenharmony_ci	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1),
3528c2ecf20Sopenharmony_ci		BPF_STX_MEM(BPF_DW, BPF_REG_6, BPF_REG_1, 0),
3538c2ecf20Sopenharmony_ci	/* else *target = sock */
3548c2ecf20Sopenharmony_ci	BPF_JMP_IMM(BPF_JNE, BPF_REG_1, 0, 1),
3558c2ecf20Sopenharmony_ci		BPF_STX_MEM(BPF_DW, BPF_REG_6, BPF_REG_2, 0),
3568c2ecf20Sopenharmony_ci	/* struct bpf_sock *sk = *target; */
3578c2ecf20Sopenharmony_ci	BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_6, 0),
3588c2ecf20Sopenharmony_ci	/* if (sk) sk->mark = 42; bpf_sk_release(sk); */
3598c2ecf20Sopenharmony_ci	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 3),
3608c2ecf20Sopenharmony_ci		BPF_MOV64_IMM(BPF_REG_3, 42),
3618c2ecf20Sopenharmony_ci		BPF_STX_MEM(BPF_W, BPF_REG_1, BPF_REG_3,
3628c2ecf20Sopenharmony_ci			    offsetof(struct bpf_sock, mark)),
3638c2ecf20Sopenharmony_ci		BPF_EMIT_CALL(BPF_FUNC_sk_release),
3648c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
3658c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
3668c2ecf20Sopenharmony_ci	},
3678c2ecf20Sopenharmony_ci	.result = REJECT,
3688c2ecf20Sopenharmony_ci	//.errstr = "same insn cannot be used with different pointers",
3698c2ecf20Sopenharmony_ci	.errstr = "cannot write into sock",
3708c2ecf20Sopenharmony_ci	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
3718c2ecf20Sopenharmony_ci},
3728c2ecf20Sopenharmony_ci{
3738c2ecf20Sopenharmony_ci	"unpriv: spill/fill of different pointers ldx",
3748c2ecf20Sopenharmony_ci	.insns = {
3758c2ecf20Sopenharmony_ci	BPF_ALU64_REG(BPF_MOV, BPF_REG_6, BPF_REG_10),
3768c2ecf20Sopenharmony_ci	BPF_ALU64_IMM(BPF_ADD, BPF_REG_6, -8),
3778c2ecf20Sopenharmony_ci	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 3),
3788c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
3798c2ecf20Sopenharmony_ci	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2,
3808c2ecf20Sopenharmony_ci		      -(__s32)offsetof(struct bpf_perf_event_data,
3818c2ecf20Sopenharmony_ci				       sample_period) - 8),
3828c2ecf20Sopenharmony_ci	BPF_STX_MEM(BPF_DW, BPF_REG_6, BPF_REG_2, 0),
3838c2ecf20Sopenharmony_ci	BPF_JMP_IMM(BPF_JNE, BPF_REG_1, 0, 1),
3848c2ecf20Sopenharmony_ci	BPF_STX_MEM(BPF_DW, BPF_REG_6, BPF_REG_1, 0),
3858c2ecf20Sopenharmony_ci	BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_6, 0),
3868c2ecf20Sopenharmony_ci	BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_1,
3878c2ecf20Sopenharmony_ci		    offsetof(struct bpf_perf_event_data, sample_period)),
3888c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
3898c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
3908c2ecf20Sopenharmony_ci	},
3918c2ecf20Sopenharmony_ci	.result = REJECT,
3928c2ecf20Sopenharmony_ci	.errstr = "same insn cannot be used with different pointers",
3938c2ecf20Sopenharmony_ci	.prog_type = BPF_PROG_TYPE_PERF_EVENT,
3948c2ecf20Sopenharmony_ci},
3958c2ecf20Sopenharmony_ci{
3968c2ecf20Sopenharmony_ci	"unpriv: write pointer into map elem value",
3978c2ecf20Sopenharmony_ci	.insns = {
3988c2ecf20Sopenharmony_ci	BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
3998c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
4008c2ecf20Sopenharmony_ci	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
4018c2ecf20Sopenharmony_ci	BPF_LD_MAP_FD(BPF_REG_1, 0),
4028c2ecf20Sopenharmony_ci	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
4038c2ecf20Sopenharmony_ci	BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 1),
4048c2ecf20Sopenharmony_ci	BPF_STX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),
4058c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
4068c2ecf20Sopenharmony_ci	},
4078c2ecf20Sopenharmony_ci	.fixup_map_hash_8b = { 3 },
4088c2ecf20Sopenharmony_ci	.errstr_unpriv = "R0 leaks addr",
4098c2ecf20Sopenharmony_ci	.result_unpriv = REJECT,
4108c2ecf20Sopenharmony_ci	.result = ACCEPT,
4118c2ecf20Sopenharmony_ci},
4128c2ecf20Sopenharmony_ci{
4138c2ecf20Sopenharmony_ci	"alu32: mov u32 const",
4148c2ecf20Sopenharmony_ci	.insns = {
4158c2ecf20Sopenharmony_ci	BPF_MOV32_IMM(BPF_REG_7, 0),
4168c2ecf20Sopenharmony_ci	BPF_ALU32_IMM(BPF_AND, BPF_REG_7, 1),
4178c2ecf20Sopenharmony_ci	BPF_MOV32_REG(BPF_REG_0, BPF_REG_7),
4188c2ecf20Sopenharmony_ci	BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 1),
4198c2ecf20Sopenharmony_ci	BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_7, 0),
4208c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
4218c2ecf20Sopenharmony_ci	},
4228c2ecf20Sopenharmony_ci	.errstr_unpriv = "R7 invalid mem access 'inv'",
4238c2ecf20Sopenharmony_ci	.result_unpriv = REJECT,
4248c2ecf20Sopenharmony_ci	.result = ACCEPT,
4258c2ecf20Sopenharmony_ci	.retval = 0,
4268c2ecf20Sopenharmony_ci},
4278c2ecf20Sopenharmony_ci{
4288c2ecf20Sopenharmony_ci	"unpriv: partial copy of pointer",
4298c2ecf20Sopenharmony_ci	.insns = {
4308c2ecf20Sopenharmony_ci	BPF_MOV32_REG(BPF_REG_1, BPF_REG_10),
4318c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
4328c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
4338c2ecf20Sopenharmony_ci	},
4348c2ecf20Sopenharmony_ci	.errstr_unpriv = "R10 partial copy",
4358c2ecf20Sopenharmony_ci	.result_unpriv = REJECT,
4368c2ecf20Sopenharmony_ci	.result = ACCEPT,
4378c2ecf20Sopenharmony_ci},
4388c2ecf20Sopenharmony_ci{
4398c2ecf20Sopenharmony_ci	"unpriv: pass pointer to tail_call",
4408c2ecf20Sopenharmony_ci	.insns = {
4418c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_3, BPF_REG_1),
4428c2ecf20Sopenharmony_ci	BPF_LD_MAP_FD(BPF_REG_2, 0),
4438c2ecf20Sopenharmony_ci	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_tail_call),
4448c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
4458c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
4468c2ecf20Sopenharmony_ci	},
4478c2ecf20Sopenharmony_ci	.fixup_prog1 = { 1 },
4488c2ecf20Sopenharmony_ci	.errstr_unpriv = "R3 leaks addr into helper",
4498c2ecf20Sopenharmony_ci	.result_unpriv = REJECT,
4508c2ecf20Sopenharmony_ci	.result = ACCEPT,
4518c2ecf20Sopenharmony_ci},
4528c2ecf20Sopenharmony_ci{
4538c2ecf20Sopenharmony_ci	"unpriv: cmp map pointer with zero",
4548c2ecf20Sopenharmony_ci	.insns = {
4558c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_1, 0),
4568c2ecf20Sopenharmony_ci	BPF_LD_MAP_FD(BPF_REG_1, 0),
4578c2ecf20Sopenharmony_ci	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 0),
4588c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
4598c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
4608c2ecf20Sopenharmony_ci	},
4618c2ecf20Sopenharmony_ci	.fixup_map_hash_8b = { 1 },
4628c2ecf20Sopenharmony_ci	.errstr_unpriv = "R1 pointer comparison",
4638c2ecf20Sopenharmony_ci	.result_unpriv = REJECT,
4648c2ecf20Sopenharmony_ci	.result = ACCEPT,
4658c2ecf20Sopenharmony_ci},
4668c2ecf20Sopenharmony_ci{
4678c2ecf20Sopenharmony_ci	"unpriv: write into frame pointer",
4688c2ecf20Sopenharmony_ci	.insns = {
4698c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_10, BPF_REG_1),
4708c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
4718c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
4728c2ecf20Sopenharmony_ci	},
4738c2ecf20Sopenharmony_ci	.errstr = "frame pointer is read only",
4748c2ecf20Sopenharmony_ci	.result = REJECT,
4758c2ecf20Sopenharmony_ci},
4768c2ecf20Sopenharmony_ci{
4778c2ecf20Sopenharmony_ci	"unpriv: spill/fill frame pointer",
4788c2ecf20Sopenharmony_ci	.insns = {
4798c2ecf20Sopenharmony_ci	BPF_ALU64_REG(BPF_MOV, BPF_REG_6, BPF_REG_10),
4808c2ecf20Sopenharmony_ci	BPF_ALU64_IMM(BPF_ADD, BPF_REG_6, -8),
4818c2ecf20Sopenharmony_ci	BPF_STX_MEM(BPF_DW, BPF_REG_6, BPF_REG_10, 0),
4828c2ecf20Sopenharmony_ci	BPF_LDX_MEM(BPF_DW, BPF_REG_10, BPF_REG_6, 0),
4838c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
4848c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
4858c2ecf20Sopenharmony_ci	},
4868c2ecf20Sopenharmony_ci	.errstr = "frame pointer is read only",
4878c2ecf20Sopenharmony_ci	.result = REJECT,
4888c2ecf20Sopenharmony_ci},
4898c2ecf20Sopenharmony_ci{
4908c2ecf20Sopenharmony_ci	"unpriv: cmp of frame pointer",
4918c2ecf20Sopenharmony_ci	.insns = {
4928c2ecf20Sopenharmony_ci	BPF_JMP_IMM(BPF_JEQ, BPF_REG_10, 0, 0),
4938c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
4948c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
4958c2ecf20Sopenharmony_ci	},
4968c2ecf20Sopenharmony_ci	.errstr_unpriv = "R10 pointer comparison",
4978c2ecf20Sopenharmony_ci	.result_unpriv = REJECT,
4988c2ecf20Sopenharmony_ci	.result = ACCEPT,
4998c2ecf20Sopenharmony_ci},
5008c2ecf20Sopenharmony_ci{
5018c2ecf20Sopenharmony_ci	"unpriv: adding of fp, reg",
5028c2ecf20Sopenharmony_ci	.insns = {
5038c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
5048c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_1, 0),
5058c2ecf20Sopenharmony_ci	BPF_ALU64_REG(BPF_ADD, BPF_REG_1, BPF_REG_10),
5068c2ecf20Sopenharmony_ci	BPF_STX_MEM(BPF_DW, BPF_REG_1, BPF_REG_0, -8),
5078c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
5088c2ecf20Sopenharmony_ci	},
5098c2ecf20Sopenharmony_ci	.errstr_unpriv = "R1 stack pointer arithmetic goes out of range",
5108c2ecf20Sopenharmony_ci	.result_unpriv = REJECT,
5118c2ecf20Sopenharmony_ci	.result = ACCEPT,
5128c2ecf20Sopenharmony_ci},
5138c2ecf20Sopenharmony_ci{
5148c2ecf20Sopenharmony_ci	"unpriv: adding of fp, imm",
5158c2ecf20Sopenharmony_ci	.insns = {
5168c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
5178c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_1, BPF_REG_10),
5188c2ecf20Sopenharmony_ci	BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, 0),
5198c2ecf20Sopenharmony_ci	BPF_STX_MEM(BPF_DW, BPF_REG_1, BPF_REG_0, -8),
5208c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
5218c2ecf20Sopenharmony_ci	},
5228c2ecf20Sopenharmony_ci	.errstr_unpriv = "R1 stack pointer arithmetic goes out of range",
5238c2ecf20Sopenharmony_ci	.result_unpriv = REJECT,
5248c2ecf20Sopenharmony_ci	.result = ACCEPT,
5258c2ecf20Sopenharmony_ci},
5268c2ecf20Sopenharmony_ci{
5278c2ecf20Sopenharmony_ci	"unpriv: cmp of stack pointer",
5288c2ecf20Sopenharmony_ci	.insns = {
5298c2ecf20Sopenharmony_ci	BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
5308c2ecf20Sopenharmony_ci	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
5318c2ecf20Sopenharmony_ci	BPF_JMP_IMM(BPF_JEQ, BPF_REG_2, 0, 0),
5328c2ecf20Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
5338c2ecf20Sopenharmony_ci	BPF_EXIT_INSN(),
5348c2ecf20Sopenharmony_ci	},
5358c2ecf20Sopenharmony_ci	.errstr_unpriv = "R2 pointer comparison",
5368c2ecf20Sopenharmony_ci	.result_unpriv = REJECT,
5378c2ecf20Sopenharmony_ci	.result = ACCEPT,
5388c2ecf20Sopenharmony_ci},
539