26 lines
941 B
C
26 lines
941 B
C
|
#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),
|