162306a36Sopenharmony_ci{ 262306a36Sopenharmony_ci "test1 ld_imm64", 362306a36Sopenharmony_ci .insns = { 462306a36Sopenharmony_ci BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1), 562306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_0, 0), 662306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_0, 0), 762306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_0, 1), 862306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_0, 1), 962306a36Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_0, 2), 1062306a36Sopenharmony_ci BPF_EXIT_INSN(), 1162306a36Sopenharmony_ci }, 1262306a36Sopenharmony_ci .errstr = "jump into the middle of ldimm64 insn 1", 1362306a36Sopenharmony_ci .errstr_unpriv = "jump into the middle of ldimm64 insn 1", 1462306a36Sopenharmony_ci .result = REJECT, 1562306a36Sopenharmony_ci}, 1662306a36Sopenharmony_ci{ 1762306a36Sopenharmony_ci "test2 ld_imm64", 1862306a36Sopenharmony_ci .insns = { 1962306a36Sopenharmony_ci BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1), 2062306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_0, 0), 2162306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_0, 0), 2262306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_0, 1), 2362306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_0, 1), 2462306a36Sopenharmony_ci BPF_EXIT_INSN(), 2562306a36Sopenharmony_ci }, 2662306a36Sopenharmony_ci .errstr = "jump into the middle of ldimm64 insn 1", 2762306a36Sopenharmony_ci .errstr_unpriv = "jump into the middle of ldimm64 insn 1", 2862306a36Sopenharmony_ci .result = REJECT, 2962306a36Sopenharmony_ci}, 3062306a36Sopenharmony_ci{ 3162306a36Sopenharmony_ci "test3 ld_imm64", 3262306a36Sopenharmony_ci .insns = { 3362306a36Sopenharmony_ci BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1), 3462306a36Sopenharmony_ci BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0), 3562306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_0, 0), 3662306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_0, 0), 3762306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_0, 1), 3862306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_0, 1), 3962306a36Sopenharmony_ci BPF_EXIT_INSN(), 4062306a36Sopenharmony_ci }, 4162306a36Sopenharmony_ci .errstr = "invalid bpf_ld_imm64 insn", 4262306a36Sopenharmony_ci .result = REJECT, 4362306a36Sopenharmony_ci}, 4462306a36Sopenharmony_ci{ 4562306a36Sopenharmony_ci "test4 ld_imm64", 4662306a36Sopenharmony_ci .insns = { 4762306a36Sopenharmony_ci BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0), 4862306a36Sopenharmony_ci BPF_EXIT_INSN(), 4962306a36Sopenharmony_ci }, 5062306a36Sopenharmony_ci .errstr = "invalid bpf_ld_imm64 insn", 5162306a36Sopenharmony_ci .result = REJECT, 5262306a36Sopenharmony_ci}, 5362306a36Sopenharmony_ci{ 5462306a36Sopenharmony_ci "test6 ld_imm64", 5562306a36Sopenharmony_ci .insns = { 5662306a36Sopenharmony_ci BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0), 5762306a36Sopenharmony_ci BPF_RAW_INSN(0, 0, 0, 0, 0), 5862306a36Sopenharmony_ci BPF_EXIT_INSN(), 5962306a36Sopenharmony_ci }, 6062306a36Sopenharmony_ci .result = ACCEPT, 6162306a36Sopenharmony_ci}, 6262306a36Sopenharmony_ci{ 6362306a36Sopenharmony_ci "test7 ld_imm64", 6462306a36Sopenharmony_ci .insns = { 6562306a36Sopenharmony_ci BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1), 6662306a36Sopenharmony_ci BPF_RAW_INSN(0, 0, 0, 0, 1), 6762306a36Sopenharmony_ci BPF_EXIT_INSN(), 6862306a36Sopenharmony_ci }, 6962306a36Sopenharmony_ci .result = ACCEPT, 7062306a36Sopenharmony_ci .retval = 1, 7162306a36Sopenharmony_ci}, 7262306a36Sopenharmony_ci{ 7362306a36Sopenharmony_ci "test8 ld_imm64", 7462306a36Sopenharmony_ci .insns = { 7562306a36Sopenharmony_ci BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 1, 1), 7662306a36Sopenharmony_ci BPF_RAW_INSN(0, 0, 0, 0, 1), 7762306a36Sopenharmony_ci BPF_EXIT_INSN(), 7862306a36Sopenharmony_ci }, 7962306a36Sopenharmony_ci .errstr = "uses reserved fields", 8062306a36Sopenharmony_ci .result = REJECT, 8162306a36Sopenharmony_ci}, 8262306a36Sopenharmony_ci{ 8362306a36Sopenharmony_ci "test9 ld_imm64", 8462306a36Sopenharmony_ci .insns = { 8562306a36Sopenharmony_ci BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1), 8662306a36Sopenharmony_ci BPF_RAW_INSN(0, 0, 0, 1, 1), 8762306a36Sopenharmony_ci BPF_EXIT_INSN(), 8862306a36Sopenharmony_ci }, 8962306a36Sopenharmony_ci .errstr = "invalid bpf_ld_imm64 insn", 9062306a36Sopenharmony_ci .result = REJECT, 9162306a36Sopenharmony_ci}, 9262306a36Sopenharmony_ci{ 9362306a36Sopenharmony_ci "test10 ld_imm64", 9462306a36Sopenharmony_ci .insns = { 9562306a36Sopenharmony_ci BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1), 9662306a36Sopenharmony_ci BPF_RAW_INSN(0, BPF_REG_1, 0, 0, 1), 9762306a36Sopenharmony_ci BPF_EXIT_INSN(), 9862306a36Sopenharmony_ci }, 9962306a36Sopenharmony_ci .errstr = "invalid bpf_ld_imm64 insn", 10062306a36Sopenharmony_ci .result = REJECT, 10162306a36Sopenharmony_ci}, 10262306a36Sopenharmony_ci{ 10362306a36Sopenharmony_ci "test11 ld_imm64", 10462306a36Sopenharmony_ci .insns = { 10562306a36Sopenharmony_ci BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1), 10662306a36Sopenharmony_ci BPF_RAW_INSN(0, 0, BPF_REG_1, 0, 1), 10762306a36Sopenharmony_ci BPF_EXIT_INSN(), 10862306a36Sopenharmony_ci }, 10962306a36Sopenharmony_ci .errstr = "invalid bpf_ld_imm64 insn", 11062306a36Sopenharmony_ci .result = REJECT, 11162306a36Sopenharmony_ci}, 11262306a36Sopenharmony_ci{ 11362306a36Sopenharmony_ci "test12 ld_imm64", 11462306a36Sopenharmony_ci .insns = { 11562306a36Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_1, 0), 11662306a36Sopenharmony_ci BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, BPF_REG_1, 0, 1), 11762306a36Sopenharmony_ci BPF_RAW_INSN(0, 0, 0, 0, 0), 11862306a36Sopenharmony_ci BPF_EXIT_INSN(), 11962306a36Sopenharmony_ci }, 12062306a36Sopenharmony_ci .errstr = "not pointing to valid bpf_map", 12162306a36Sopenharmony_ci .result = REJECT, 12262306a36Sopenharmony_ci}, 12362306a36Sopenharmony_ci{ 12462306a36Sopenharmony_ci "test13 ld_imm64", 12562306a36Sopenharmony_ci .insns = { 12662306a36Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_1, 0), 12762306a36Sopenharmony_ci BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, BPF_REG_1, 0, 1), 12862306a36Sopenharmony_ci BPF_RAW_INSN(0, 0, BPF_REG_1, 0, 1), 12962306a36Sopenharmony_ci BPF_EXIT_INSN(), 13062306a36Sopenharmony_ci }, 13162306a36Sopenharmony_ci .errstr = "invalid bpf_ld_imm64 insn", 13262306a36Sopenharmony_ci .result = REJECT, 13362306a36Sopenharmony_ci}, 13462306a36Sopenharmony_ci{ 13562306a36Sopenharmony_ci "test14 ld_imm64: reject 2nd imm != 0", 13662306a36Sopenharmony_ci .insns = { 13762306a36Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_0, 0), 13862306a36Sopenharmony_ci BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, BPF_REG_1, 13962306a36Sopenharmony_ci BPF_PSEUDO_MAP_FD, 0, 0), 14062306a36Sopenharmony_ci BPF_RAW_INSN(0, 0, 0, 0, 0xfefefe), 14162306a36Sopenharmony_ci BPF_EXIT_INSN(), 14262306a36Sopenharmony_ci }, 14362306a36Sopenharmony_ci .fixup_map_hash_48b = { 1 }, 14462306a36Sopenharmony_ci .errstr = "unrecognized bpf_ld_imm64 insn", 14562306a36Sopenharmony_ci .result = REJECT, 14662306a36Sopenharmony_ci}, 147