root/tools/testing/selftests/bpf/verifier/ld_imm64.c

/* [<][>][^][v][top][bottom][index][help] */
   1 {
   2         "test1 ld_imm64",
   3         .insns = {
   4         BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1),
   5         BPF_LD_IMM64(BPF_REG_0, 0),
   6         BPF_LD_IMM64(BPF_REG_0, 0),
   7         BPF_LD_IMM64(BPF_REG_0, 1),
   8         BPF_LD_IMM64(BPF_REG_0, 1),
   9         BPF_MOV64_IMM(BPF_REG_0, 2),
  10         BPF_EXIT_INSN(),
  11         },
  12         .errstr = "invalid BPF_LD_IMM insn",
  13         .errstr_unpriv = "R1 pointer comparison",
  14         .result = REJECT,
  15 },
  16 {
  17         "test2 ld_imm64",
  18         .insns = {
  19         BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1),
  20         BPF_LD_IMM64(BPF_REG_0, 0),
  21         BPF_LD_IMM64(BPF_REG_0, 0),
  22         BPF_LD_IMM64(BPF_REG_0, 1),
  23         BPF_LD_IMM64(BPF_REG_0, 1),
  24         BPF_EXIT_INSN(),
  25         },
  26         .errstr = "invalid BPF_LD_IMM insn",
  27         .errstr_unpriv = "R1 pointer comparison",
  28         .result = REJECT,
  29 },
  30 {
  31         "test3 ld_imm64",
  32         .insns = {
  33         BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1),
  34         BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0),
  35         BPF_LD_IMM64(BPF_REG_0, 0),
  36         BPF_LD_IMM64(BPF_REG_0, 0),
  37         BPF_LD_IMM64(BPF_REG_0, 1),
  38         BPF_LD_IMM64(BPF_REG_0, 1),
  39         BPF_EXIT_INSN(),
  40         },
  41         .errstr = "invalid bpf_ld_imm64 insn",
  42         .result = REJECT,
  43 },
  44 {
  45         "test4 ld_imm64",
  46         .insns = {
  47         BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0),
  48         BPF_EXIT_INSN(),
  49         },
  50         .errstr = "invalid bpf_ld_imm64 insn",
  51         .result = REJECT,
  52 },
  53 {
  54         "test5 ld_imm64",
  55         .insns = {
  56         BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0),
  57         },
  58         .errstr = "invalid bpf_ld_imm64 insn",
  59         .result = REJECT,
  60 },
  61 {
  62         "test6 ld_imm64",
  63         .insns = {
  64         BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0),
  65         BPF_RAW_INSN(0, 0, 0, 0, 0),
  66         BPF_EXIT_INSN(),
  67         },
  68         .result = ACCEPT,
  69 },
  70 {
  71         "test7 ld_imm64",
  72         .insns = {
  73         BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1),
  74         BPF_RAW_INSN(0, 0, 0, 0, 1),
  75         BPF_EXIT_INSN(),
  76         },
  77         .result = ACCEPT,
  78         .retval = 1,
  79 },
  80 {
  81         "test8 ld_imm64",
  82         .insns = {
  83         BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 1, 1),
  84         BPF_RAW_INSN(0, 0, 0, 0, 1),
  85         BPF_EXIT_INSN(),
  86         },
  87         .errstr = "uses reserved fields",
  88         .result = REJECT,
  89 },
  90 {
  91         "test9 ld_imm64",
  92         .insns = {
  93         BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1),
  94         BPF_RAW_INSN(0, 0, 0, 1, 1),
  95         BPF_EXIT_INSN(),
  96         },
  97         .errstr = "invalid bpf_ld_imm64 insn",
  98         .result = REJECT,
  99 },
 100 {
 101         "test10 ld_imm64",
 102         .insns = {
 103         BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1),
 104         BPF_RAW_INSN(0, BPF_REG_1, 0, 0, 1),
 105         BPF_EXIT_INSN(),
 106         },
 107         .errstr = "invalid bpf_ld_imm64 insn",
 108         .result = REJECT,
 109 },
 110 {
 111         "test11 ld_imm64",
 112         .insns = {
 113         BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1),
 114         BPF_RAW_INSN(0, 0, BPF_REG_1, 0, 1),
 115         BPF_EXIT_INSN(),
 116         },
 117         .errstr = "invalid bpf_ld_imm64 insn",
 118         .result = REJECT,
 119 },
 120 {
 121         "test12 ld_imm64",
 122         .insns = {
 123         BPF_MOV64_IMM(BPF_REG_1, 0),
 124         BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, BPF_REG_1, 0, 1),
 125         BPF_RAW_INSN(0, 0, 0, 0, 0),
 126         BPF_EXIT_INSN(),
 127         },
 128         .errstr = "not pointing to valid bpf_map",
 129         .result = REJECT,
 130 },
 131 {
 132         "test13 ld_imm64",
 133         .insns = {
 134         BPF_MOV64_IMM(BPF_REG_1, 0),
 135         BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, BPF_REG_1, 0, 1),
 136         BPF_RAW_INSN(0, 0, BPF_REG_1, 0, 1),
 137         BPF_EXIT_INSN(),
 138         },
 139         .errstr = "invalid bpf_ld_imm64 insn",
 140         .result = REJECT,
 141 },
 142 {
 143         "test14 ld_imm64: reject 2nd imm != 0",
 144         .insns = {
 145         BPF_MOV64_IMM(BPF_REG_0, 0),
 146         BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, BPF_REG_1,
 147                      BPF_PSEUDO_MAP_FD, 0, 0),
 148         BPF_RAW_INSN(0, 0, 0, 0, 0xfefefe),
 149         BPF_EXIT_INSN(),
 150         },
 151         .fixup_map_hash_48b = { 1 },
 152         .errstr = "unrecognized bpf_ld_imm64 insn",
 153         .result = REJECT,
 154 },

/* [<][>][^][v][top][bottom][index][help] */