Back to home page

OSCL-LXR

 
 

    


0001 #define __INVALID_ATOMIC_ACCESS_TEST(op)                \
0002     {                               \
0003         "atomic " #op " access through non-pointer ",       \
0004         .insns = {                      \
0005             BPF_MOV64_IMM(BPF_REG_0, 1),            \
0006             BPF_MOV64_IMM(BPF_REG_1, 0),            \
0007             BPF_ATOMIC_OP(BPF_DW, op, BPF_REG_1, BPF_REG_0, -8), \
0008             BPF_MOV64_IMM(BPF_REG_0, 0),            \
0009             BPF_EXIT_INSN(),                \
0010         },                          \
0011         .result = REJECT,                   \
0012         .errstr = "R1 invalid mem access 'scalar'"      \
0013     }
0014 __INVALID_ATOMIC_ACCESS_TEST(BPF_ADD),
0015 __INVALID_ATOMIC_ACCESS_TEST(BPF_ADD | BPF_FETCH),
0016 __INVALID_ATOMIC_ACCESS_TEST(BPF_ADD),
0017 __INVALID_ATOMIC_ACCESS_TEST(BPF_ADD | BPF_FETCH),
0018 __INVALID_ATOMIC_ACCESS_TEST(BPF_AND),
0019 __INVALID_ATOMIC_ACCESS_TEST(BPF_AND | BPF_FETCH),
0020 __INVALID_ATOMIC_ACCESS_TEST(BPF_OR),
0021 __INVALID_ATOMIC_ACCESS_TEST(BPF_OR | BPF_FETCH),
0022 __INVALID_ATOMIC_ACCESS_TEST(BPF_XOR),
0023 __INVALID_ATOMIC_ACCESS_TEST(BPF_XOR | BPF_FETCH),
0024 __INVALID_ATOMIC_ACCESS_TEST(BPF_XCHG),
0025 __INVALID_ATOMIC_ACCESS_TEST(BPF_CMPXCHG),