| 12345678910111213141516171819202122232425 |
- #define __INVALID_ATOMIC_ACCESS_TEST(op) \
- { \
- "atomic " #op " access through non-pointer ", \
- .insns = { \
- BPF_MOV64_IMM(BPF_REG_0, 1), \
- BPF_MOV64_IMM(BPF_REG_1, 0), \
- BPF_ATOMIC_OP(BPF_DW, op, BPF_REG_1, BPF_REG_0, -8), \
- BPF_MOV64_IMM(BPF_REG_0, 0), \
- BPF_EXIT_INSN(), \
- }, \
- .result = REJECT, \
- .errstr = "R1 invalid mem access 'scalar'" \
- }
- __INVALID_ATOMIC_ACCESS_TEST(BPF_ADD),
- __INVALID_ATOMIC_ACCESS_TEST(BPF_ADD | BPF_FETCH),
- __INVALID_ATOMIC_ACCESS_TEST(BPF_ADD),
- __INVALID_ATOMIC_ACCESS_TEST(BPF_ADD | BPF_FETCH),
- __INVALID_ATOMIC_ACCESS_TEST(BPF_AND),
- __INVALID_ATOMIC_ACCESS_TEST(BPF_AND | BPF_FETCH),
- __INVALID_ATOMIC_ACCESS_TEST(BPF_OR),
- __INVALID_ATOMIC_ACCESS_TEST(BPF_OR | BPF_FETCH),
- __INVALID_ATOMIC_ACCESS_TEST(BPF_XOR),
- __INVALID_ATOMIC_ACCESS_TEST(BPF_XOR | BPF_FETCH),
- __INVALID_ATOMIC_ACCESS_TEST(BPF_XCHG),
- __INVALID_ATOMIC_ACCESS_TEST(BPF_CMPXCHG),
|