18c2ecf20Sopenharmony_ci{ 28c2ecf20Sopenharmony_ci "map element value store of cleared call register", 38c2ecf20Sopenharmony_ci .insns = { 48c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_2, BPF_REG_10), 58c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8), 68c2ecf20Sopenharmony_ci BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0), 78c2ecf20Sopenharmony_ci BPF_LD_MAP_FD(BPF_REG_1, 0), 88c2ecf20Sopenharmony_ci BPF_EMIT_CALL(BPF_FUNC_map_lookup_elem), 98c2ecf20Sopenharmony_ci BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 1), 108c2ecf20Sopenharmony_ci BPF_STX_MEM(BPF_DW, BPF_REG_0, BPF_REG_1, 0), 118c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 128c2ecf20Sopenharmony_ci }, 138c2ecf20Sopenharmony_ci .fixup_map_hash_48b = { 3 }, 148c2ecf20Sopenharmony_ci .errstr_unpriv = "R1 !read_ok", 158c2ecf20Sopenharmony_ci .errstr = "R1 !read_ok", 168c2ecf20Sopenharmony_ci .result = REJECT, 178c2ecf20Sopenharmony_ci .result_unpriv = REJECT, 188c2ecf20Sopenharmony_ci}, 198c2ecf20Sopenharmony_ci{ 208c2ecf20Sopenharmony_ci "map element value with unaligned store", 218c2ecf20Sopenharmony_ci .insns = { 228c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_2, BPF_REG_10), 238c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8), 248c2ecf20Sopenharmony_ci BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0), 258c2ecf20Sopenharmony_ci BPF_LD_MAP_FD(BPF_REG_1, 0), 268c2ecf20Sopenharmony_ci BPF_EMIT_CALL(BPF_FUNC_map_lookup_elem), 278c2ecf20Sopenharmony_ci BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 17), 288c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_ADD, BPF_REG_0, 3), 298c2ecf20Sopenharmony_ci BPF_ST_MEM(BPF_DW, BPF_REG_0, 0, 42), 308c2ecf20Sopenharmony_ci BPF_ST_MEM(BPF_DW, BPF_REG_0, 2, 43), 318c2ecf20Sopenharmony_ci BPF_ST_MEM(BPF_DW, BPF_REG_0, -2, 44), 328c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_8, BPF_REG_0), 338c2ecf20Sopenharmony_ci BPF_ST_MEM(BPF_DW, BPF_REG_8, 0, 32), 348c2ecf20Sopenharmony_ci BPF_ST_MEM(BPF_DW, BPF_REG_8, 2, 33), 358c2ecf20Sopenharmony_ci BPF_ST_MEM(BPF_DW, BPF_REG_8, -2, 34), 368c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_ADD, BPF_REG_8, 5), 378c2ecf20Sopenharmony_ci BPF_ST_MEM(BPF_DW, BPF_REG_8, 0, 22), 388c2ecf20Sopenharmony_ci BPF_ST_MEM(BPF_DW, BPF_REG_8, 4, 23), 398c2ecf20Sopenharmony_ci BPF_ST_MEM(BPF_DW, BPF_REG_8, -7, 24), 408c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_7, BPF_REG_8), 418c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_ADD, BPF_REG_7, 3), 428c2ecf20Sopenharmony_ci BPF_ST_MEM(BPF_DW, BPF_REG_7, 0, 22), 438c2ecf20Sopenharmony_ci BPF_ST_MEM(BPF_DW, BPF_REG_7, 4, 23), 448c2ecf20Sopenharmony_ci BPF_ST_MEM(BPF_DW, BPF_REG_7, -4, 24), 458c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 468c2ecf20Sopenharmony_ci }, 478c2ecf20Sopenharmony_ci .fixup_map_hash_48b = { 3 }, 488c2ecf20Sopenharmony_ci .errstr_unpriv = "R0 leaks addr", 498c2ecf20Sopenharmony_ci .result = ACCEPT, 508c2ecf20Sopenharmony_ci .result_unpriv = REJECT, 518c2ecf20Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 528c2ecf20Sopenharmony_ci}, 538c2ecf20Sopenharmony_ci{ 548c2ecf20Sopenharmony_ci "map element value with unaligned load", 558c2ecf20Sopenharmony_ci .insns = { 568c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_2, BPF_REG_10), 578c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8), 588c2ecf20Sopenharmony_ci BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0), 598c2ecf20Sopenharmony_ci BPF_LD_MAP_FD(BPF_REG_1, 0), 608c2ecf20Sopenharmony_ci BPF_EMIT_CALL(BPF_FUNC_map_lookup_elem), 618c2ecf20Sopenharmony_ci BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 11), 628c2ecf20Sopenharmony_ci BPF_LDX_MEM(BPF_W, BPF_REG_1, BPF_REG_0, 0), 638c2ecf20Sopenharmony_ci BPF_JMP_IMM(BPF_JGE, BPF_REG_1, MAX_ENTRIES, 9), 648c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_ADD, BPF_REG_0, 3), 658c2ecf20Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_0, 0), 668c2ecf20Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_0, 2), 678c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_8, BPF_REG_0), 688c2ecf20Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_8, 0), 698c2ecf20Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_8, 2), 708c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_ADD, BPF_REG_0, 5), 718c2ecf20Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_0, 0), 728c2ecf20Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_0, 4), 738c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 748c2ecf20Sopenharmony_ci }, 758c2ecf20Sopenharmony_ci .fixup_map_hash_48b = { 3 }, 768c2ecf20Sopenharmony_ci .errstr_unpriv = "R0 leaks addr", 778c2ecf20Sopenharmony_ci .result = ACCEPT, 788c2ecf20Sopenharmony_ci .result_unpriv = REJECT, 798c2ecf20Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 808c2ecf20Sopenharmony_ci}, 818c2ecf20Sopenharmony_ci{ 828c2ecf20Sopenharmony_ci "map element value is preserved across register spilling", 838c2ecf20Sopenharmony_ci .insns = { 848c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_2, BPF_REG_10), 858c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8), 868c2ecf20Sopenharmony_ci BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0), 878c2ecf20Sopenharmony_ci BPF_LD_MAP_FD(BPF_REG_1, 0), 888c2ecf20Sopenharmony_ci BPF_EMIT_CALL(BPF_FUNC_map_lookup_elem), 898c2ecf20Sopenharmony_ci BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 7), 908c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_ADD, BPF_REG_0, offsetof(struct test_val, foo)), 918c2ecf20Sopenharmony_ci BPF_ST_MEM(BPF_DW, BPF_REG_0, 0, 42), 928c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_1, BPF_REG_10), 938c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, -184), 948c2ecf20Sopenharmony_ci BPF_STX_MEM(BPF_DW, BPF_REG_1, BPF_REG_0, 0), 958c2ecf20Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_3, BPF_REG_1, 0), 968c2ecf20Sopenharmony_ci BPF_ST_MEM(BPF_DW, BPF_REG_3, 0, 42), 978c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 988c2ecf20Sopenharmony_ci }, 998c2ecf20Sopenharmony_ci .fixup_map_hash_48b = { 3 }, 1008c2ecf20Sopenharmony_ci .errstr_unpriv = "R0 leaks addr", 1018c2ecf20Sopenharmony_ci .result = ACCEPT, 1028c2ecf20Sopenharmony_ci .result_unpriv = REJECT, 1038c2ecf20Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 1048c2ecf20Sopenharmony_ci}, 105