0001 {
0002 "invalid call insn1",
0003 .insns = {
0004 BPF_RAW_INSN(BPF_JMP | BPF_CALL | BPF_X, 0, 0, 0, 0),
0005 BPF_EXIT_INSN(),
0006 },
0007 .errstr = "unknown opcode 8d",
0008 .result = REJECT,
0009 },
0010 {
0011 "invalid call insn2",
0012 .insns = {
0013 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 1, 0),
0014 BPF_EXIT_INSN(),
0015 },
0016 .errstr = "BPF_CALL uses reserved",
0017 .result = REJECT,
0018 },
0019 {
0020 "invalid function call",
0021 .insns = {
0022 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, 1234567),
0023 BPF_EXIT_INSN(),
0024 },
0025 .errstr = "invalid func unknown#1234567",
0026 .result = REJECT,
0027 },
0028 {
0029 "invalid argument register",
0030 .insns = {
0031 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_cgroup_classid),
0032 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_cgroup_classid),
0033 BPF_EXIT_INSN(),
0034 },
0035 .errstr = "R1 !read_ok",
0036 .result = REJECT,
0037 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
0038 },
0039 {
0040 "non-invalid argument register",
0041 .insns = {
0042 BPF_ALU64_REG(BPF_MOV, BPF_REG_6, BPF_REG_1),
0043 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_cgroup_classid),
0044 BPF_ALU64_REG(BPF_MOV, BPF_REG_1, BPF_REG_6),
0045 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_cgroup_classid),
0046 BPF_EXIT_INSN(),
0047 },
0048 .result = ACCEPT,
0049 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
0050 },