0001 {
0002 "unreachable",
0003 .insns = {
0004 BPF_EXIT_INSN(),
0005 BPF_EXIT_INSN(),
0006 },
0007 .errstr = "unreachable",
0008 .result = REJECT,
0009 },
0010 {
0011 "unreachable2",
0012 .insns = {
0013 BPF_JMP_IMM(BPF_JA, 0, 0, 1),
0014 BPF_JMP_IMM(BPF_JA, 0, 0, 0),
0015 BPF_EXIT_INSN(),
0016 },
0017 .errstr = "unreachable",
0018 .result = REJECT,
0019 },
0020 {
0021 "out of range jump",
0022 .insns = {
0023 BPF_JMP_IMM(BPF_JA, 0, 0, 1),
0024 BPF_EXIT_INSN(),
0025 },
0026 .errstr = "jump out of range",
0027 .result = REJECT,
0028 },
0029 {
0030 "out of range jump2",
0031 .insns = {
0032 BPF_JMP_IMM(BPF_JA, 0, 0, -2),
0033 BPF_EXIT_INSN(),
0034 },
0035 .errstr = "jump out of range",
0036 .result = REJECT,
0037 },
0038 {
0039 "loop (back-edge)",
0040 .insns = {
0041 BPF_JMP_IMM(BPF_JA, 0, 0, -1),
0042 BPF_EXIT_INSN(),
0043 },
0044 .errstr = "unreachable insn 1",
0045 .errstr_unpriv = "back-edge",
0046 .result = REJECT,
0047 },
0048 {
0049 "loop2 (back-edge)",
0050 .insns = {
0051 BPF_MOV64_REG(BPF_REG_1, BPF_REG_0),
0052 BPF_MOV64_REG(BPF_REG_2, BPF_REG_0),
0053 BPF_MOV64_REG(BPF_REG_3, BPF_REG_0),
0054 BPF_JMP_IMM(BPF_JA, 0, 0, -4),
0055 BPF_EXIT_INSN(),
0056 },
0057 .errstr = "unreachable insn 4",
0058 .errstr_unpriv = "back-edge",
0059 .result = REJECT,
0060 },
0061 {
0062 "conditional loop",
0063 .insns = {
0064 BPF_MOV64_REG(BPF_REG_0, BPF_REG_1),
0065 BPF_MOV64_REG(BPF_REG_2, BPF_REG_0),
0066 BPF_MOV64_REG(BPF_REG_3, BPF_REG_0),
0067 BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, -3),
0068 BPF_EXIT_INSN(),
0069 },
0070 .errstr = "infinite loop detected",
0071 .errstr_unpriv = "back-edge",
0072 .result = REJECT,
0073 },