162306a36Sopenharmony_ci#define __INVALID_ATOMIC_ACCESS_TEST(op) \ 262306a36Sopenharmony_ci { \ 362306a36Sopenharmony_ci "atomic " #op " access through non-pointer ", \ 462306a36Sopenharmony_ci .insns = { \ 562306a36Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_0, 1), \ 662306a36Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_1, 0), \ 762306a36Sopenharmony_ci BPF_ATOMIC_OP(BPF_DW, op, BPF_REG_1, BPF_REG_0, -8), \ 862306a36Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_0, 0), \ 962306a36Sopenharmony_ci BPF_EXIT_INSN(), \ 1062306a36Sopenharmony_ci }, \ 1162306a36Sopenharmony_ci .result = REJECT, \ 1262306a36Sopenharmony_ci .errstr = "R1 invalid mem access 'scalar'" \ 1362306a36Sopenharmony_ci } 1462306a36Sopenharmony_ci__INVALID_ATOMIC_ACCESS_TEST(BPF_ADD), 1562306a36Sopenharmony_ci__INVALID_ATOMIC_ACCESS_TEST(BPF_ADD | BPF_FETCH), 1662306a36Sopenharmony_ci__INVALID_ATOMIC_ACCESS_TEST(BPF_ADD), 1762306a36Sopenharmony_ci__INVALID_ATOMIC_ACCESS_TEST(BPF_ADD | BPF_FETCH), 1862306a36Sopenharmony_ci__INVALID_ATOMIC_ACCESS_TEST(BPF_AND), 1962306a36Sopenharmony_ci__INVALID_ATOMIC_ACCESS_TEST(BPF_AND | BPF_FETCH), 2062306a36Sopenharmony_ci__INVALID_ATOMIC_ACCESS_TEST(BPF_OR), 2162306a36Sopenharmony_ci__INVALID_ATOMIC_ACCESS_TEST(BPF_OR | BPF_FETCH), 2262306a36Sopenharmony_ci__INVALID_ATOMIC_ACCESS_TEST(BPF_XOR), 2362306a36Sopenharmony_ci__INVALID_ATOMIC_ACCESS_TEST(BPF_XOR | BPF_FETCH), 2462306a36Sopenharmony_ci__INVALID_ATOMIC_ACCESS_TEST(BPF_XCHG), 2562306a36Sopenharmony_ci__INVALID_ATOMIC_ACCESS_TEST(BPF_CMPXCHG), 26