1 { 2 "invalid call insn1", 3 .insns = { 4 BPF_RAW_INSN(BPF_JMP | BPF_CALL | BPF_X, 0, 0, 0, 0), 5 BPF_EXIT_INSN(), 6 }, 7 .errstr = "unknown opcode 8d", 8 .result = REJECT, 9 }, 10 { 11 "invalid call insn2", 12 .insns = { 13 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 1, 0), 14 BPF_EXIT_INSN(), 15 }, 16 .errstr = "BPF_CALL uses reserved", 17 .result = REJECT, 18 }, 19 { 20 "invalid function call", 21 .insns = { 22 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, 1234567), 23 BPF_EXIT_INSN(), 24 }, 25 .errstr = "invalid func unknown#1234567", 26 .result = REJECT, 27 }, 28 { 29 "invalid argument register", 30 .insns = { 31 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_cgroup_classid), 32 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_cgroup_classid), 33 BPF_EXIT_INSN(), 34 }, 35 .errstr = "R1 !read_ok", 36 .result = REJECT, 37 .prog_type = BPF_PROG_TYPE_SCHED_CLS, 38 }, 39 { 40 "non-invalid argument register", 41 .insns = { 42 BPF_ALU64_REG(BPF_MOV, BPF_REG_6, BPF_REG_1), 43 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_cgroup_classid), 44 BPF_ALU64_REG(BPF_MOV, BPF_REG_1, BPF_REG_6), 45 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_cgroup_classid), 46 BPF_EXIT_INSN(), 47 }, 48 .result = ACCEPT, 49 .prog_type = BPF_PROG_TYPE_SCHED_CLS, 50 }, 51