~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/testing/selftests/bpf/verifier/jit.c

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 {
  2         "jit: lsh, rsh, arsh by 1",
  3         .insns = {
  4         BPF_MOV64_IMM(BPF_REG_0, 1),
  5         BPF_MOV64_IMM(BPF_REG_1, 0xff),
  6         BPF_ALU64_IMM(BPF_LSH, BPF_REG_1, 1),
  7         BPF_ALU32_IMM(BPF_LSH, BPF_REG_1, 1),
  8         BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0x3fc, 1),
  9         BPF_EXIT_INSN(),
 10         BPF_ALU64_IMM(BPF_RSH, BPF_REG_1, 1),
 11         BPF_ALU32_IMM(BPF_RSH, BPF_REG_1, 1),
 12         BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0xff, 1),
 13         BPF_EXIT_INSN(),
 14         BPF_ALU64_IMM(BPF_ARSH, BPF_REG_1, 1),
 15         BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0x7f, 1),
 16         BPF_EXIT_INSN(),
 17         BPF_MOV64_IMM(BPF_REG_0, 2),
 18         BPF_EXIT_INSN(),
 19         },
 20         .result = ACCEPT,
 21         .retval = 2,
 22 },
 23 {
 24         "jit: lsh, rsh, arsh by reg",
 25         .insns = {
 26         BPF_MOV64_IMM(BPF_REG_0, 1),
 27         BPF_MOV64_IMM(BPF_REG_4, 1),
 28         BPF_MOV64_IMM(BPF_REG_1, 0xff),
 29         BPF_ALU64_REG(BPF_LSH, BPF_REG_1, BPF_REG_0),
 30         BPF_ALU32_REG(BPF_LSH, BPF_REG_1, BPF_REG_4),
 31         BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0x3fc, 1),
 32         BPF_EXIT_INSN(),
 33         BPF_ALU64_REG(BPF_RSH, BPF_REG_1, BPF_REG_4),
 34         BPF_MOV64_REG(BPF_REG_4, BPF_REG_1),
 35         BPF_ALU32_REG(BPF_RSH, BPF_REG_4, BPF_REG_0),
 36         BPF_JMP_IMM(BPF_JEQ, BPF_REG_4, 0xff, 1),
 37         BPF_EXIT_INSN(),
 38         BPF_ALU64_REG(BPF_ARSH, BPF_REG_4, BPF_REG_4),
 39         BPF_JMP_IMM(BPF_JEQ, BPF_REG_4, 0, 1),
 40         BPF_EXIT_INSN(),
 41         BPF_MOV64_IMM(BPF_REG_0, 2),
 42         BPF_EXIT_INSN(),
 43         },
 44         .result = ACCEPT,
 45         .retval = 2,
 46 },
 47 {
 48         "jit: mov32 for ldimm64, 1",
 49         .insns = {
 50         BPF_MOV64_IMM(BPF_REG_0, 2),
 51         BPF_LD_IMM64(BPF_REG_1, 0xfeffffffffffffffULL),
 52         BPF_ALU64_IMM(BPF_RSH, BPF_REG_1, 32),
 53         BPF_LD_IMM64(BPF_REG_2, 0xfeffffffULL),
 54         BPF_JMP_REG(BPF_JEQ, BPF_REG_1, BPF_REG_2, 1),
 55         BPF_MOV64_IMM(BPF_REG_0, 1),
 56         BPF_EXIT_INSN(),
 57         },
 58         .result = ACCEPT,
 59         .retval = 2,
 60 },
 61 {
 62         "jit: mov32 for ldimm64, 2",
 63         .insns = {
 64         BPF_MOV64_IMM(BPF_REG_0, 1),
 65         BPF_LD_IMM64(BPF_REG_1, 0x1ffffffffULL),
 66         BPF_LD_IMM64(BPF_REG_2, 0xffffffffULL),
 67         BPF_JMP_REG(BPF_JEQ, BPF_REG_1, BPF_REG_2, 1),
 68         BPF_MOV64_IMM(BPF_REG_0, 2),
 69         BPF_EXIT_INSN(),
 70         },
 71         .result = ACCEPT,
 72         .retval = 2,
 73 },
 74 {
 75         "jit: various mul tests",
 76         .insns = {
 77         BPF_LD_IMM64(BPF_REG_2, 0xeeff0d413122ULL),
 78         BPF_LD_IMM64(BPF_REG_0, 0xfefefeULL),
 79         BPF_LD_IMM64(BPF_REG_1, 0xefefefULL),
 80         BPF_ALU64_REG(BPF_MUL, BPF_REG_0, BPF_REG_1),
 81         BPF_JMP_REG(BPF_JEQ, BPF_REG_0, BPF_REG_2, 2),
 82         BPF_MOV64_IMM(BPF_REG_0, 1),
 83         BPF_EXIT_INSN(),
 84         BPF_LD_IMM64(BPF_REG_3, 0xfefefeULL),
 85         BPF_ALU64_REG(BPF_MUL, BPF_REG_3, BPF_REG_1),
 86         BPF_JMP_REG(BPF_JEQ, BPF_REG_3, BPF_REG_2, 2),
 87         BPF_MOV64_IMM(BPF_REG_0, 1),
 88         BPF_EXIT_INSN(),
 89         BPF_LD_IMM64(BPF_REG_3, 0xfefefeULL),
 90         BPF_ALU64_IMM(BPF_MUL, BPF_REG_3, 0xefefef),
 91         BPF_JMP_REG(BPF_JEQ, BPF_REG_3, BPF_REG_2, 2),
 92         BPF_MOV64_IMM(BPF_REG_0, 1),
 93         BPF_EXIT_INSN(),
 94         BPF_MOV32_REG(BPF_REG_2, BPF_REG_2),
 95         BPF_LD_IMM64(BPF_REG_0, 0xfefefeULL),
 96         BPF_ALU32_REG(BPF_MUL, BPF_REG_0, BPF_REG_1),
 97         BPF_JMP_REG(BPF_JEQ, BPF_REG_0, BPF_REG_2, 2),
 98         BPF_MOV64_IMM(BPF_REG_0, 1),
 99         BPF_EXIT_INSN(),
100         BPF_LD_IMM64(BPF_REG_3, 0xfefefeULL),
101         BPF_ALU32_REG(BPF_MUL, BPF_REG_3, BPF_REG_1),
102         BPF_JMP_REG(BPF_JEQ, BPF_REG_3, BPF_REG_2, 2),
103         BPF_MOV64_IMM(BPF_REG_0, 1),
104         BPF_EXIT_INSN(),
105         BPF_LD_IMM64(BPF_REG_3, 0xfefefeULL),
106         BPF_ALU32_IMM(BPF_MUL, BPF_REG_3, 0xefefef),
107         BPF_JMP_REG(BPF_JEQ, BPF_REG_3, BPF_REG_2, 2),
108         BPF_MOV64_IMM(BPF_REG_0, 1),
109         BPF_EXIT_INSN(),
110         BPF_LD_IMM64(BPF_REG_0, 0xfefefeULL),
111         BPF_LD_IMM64(BPF_REG_2, 0x2ad4d4aaULL),
112         BPF_ALU32_IMM(BPF_MUL, BPF_REG_0, 0x2b),
113         BPF_JMP_REG(BPF_JEQ, BPF_REG_0, BPF_REG_2, 2),
114         BPF_MOV64_IMM(BPF_REG_0, 1),
115         BPF_EXIT_INSN(),
116         BPF_LD_IMM64(BPF_REG_0, 0x952a7bbcULL),
117         BPF_LD_IMM64(BPF_REG_1, 0xfefefeULL),
118         BPF_LD_IMM64(BPF_REG_5, 0xeeff0d413122ULL),
119         BPF_ALU32_REG(BPF_MUL, BPF_REG_5, BPF_REG_1),
120         BPF_JMP_REG(BPF_JEQ, BPF_REG_5, BPF_REG_0, 2),
121         BPF_MOV64_IMM(BPF_REG_0, 1),
122         BPF_EXIT_INSN(),
123         BPF_MOV64_IMM(BPF_REG_0, 2),
124         BPF_EXIT_INSN(),
125         },
126         .result = ACCEPT,
127         .retval = 2,
128 },
129 {
130         "jit: various div tests",
131         .insns = {
132         BPF_LD_IMM64(BPF_REG_2, 0xefeffeULL),
133         BPF_LD_IMM64(BPF_REG_0, 0xeeff0d413122ULL),
134         BPF_LD_IMM64(BPF_REG_1, 0xfefeeeULL),
135         BPF_ALU64_REG(BPF_DIV, BPF_REG_0, BPF_REG_1),
136         BPF_JMP_REG(BPF_JEQ, BPF_REG_0, BPF_REG_2, 2),
137         BPF_MOV64_IMM(BPF_REG_0, 1),
138         BPF_EXIT_INSN(),
139         BPF_LD_IMM64(BPF_REG_3, 0xeeff0d413122ULL),
140         BPF_ALU64_IMM(BPF_DIV, BPF_REG_3, 0xfefeeeULL),
141         BPF_JMP_REG(BPF_JEQ, BPF_REG_3, BPF_REG_2, 2),
142         BPF_MOV64_IMM(BPF_REG_0, 1),
143         BPF_EXIT_INSN(),
144         BPF_LD_IMM64(BPF_REG_2, 0xaa93ULL),
145         BPF_ALU64_IMM(BPF_MOD, BPF_REG_1, 0xbeefULL),
146         BPF_JMP_REG(BPF_JEQ, BPF_REG_1, BPF_REG_2, 2),
147         BPF_MOV64_IMM(BPF_REG_0, 1),
148         BPF_EXIT_INSN(),
149         BPF_LD_IMM64(BPF_REG_1, 0xfefeeeULL),
150         BPF_LD_IMM64(BPF_REG_3, 0xbeefULL),
151         BPF_ALU64_REG(BPF_MOD, BPF_REG_1, BPF_REG_3),
152         BPF_JMP_REG(BPF_JEQ, BPF_REG_1, BPF_REG_2, 2),
153         BPF_MOV64_IMM(BPF_REG_0, 1),
154         BPF_EXIT_INSN(),
155         BPF_LD_IMM64(BPF_REG_2, 0x5ee1dULL),
156         BPF_LD_IMM64(BPF_REG_1, 0xfefeeeULL),
157         BPF_LD_IMM64(BPF_REG_3, 0x2bULL),
158         BPF_ALU32_REG(BPF_DIV, BPF_REG_1, BPF_REG_3),
159         BPF_JMP_REG(BPF_JEQ, BPF_REG_1, BPF_REG_2, 2),
160         BPF_MOV64_IMM(BPF_REG_0, 1),
161         BPF_EXIT_INSN(),
162         BPF_ALU32_REG(BPF_DIV, BPF_REG_1, BPF_REG_1),
163         BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 1, 2),
164         BPF_MOV64_IMM(BPF_REG_0, 1),
165         BPF_EXIT_INSN(),
166         BPF_ALU64_REG(BPF_MOD, BPF_REG_2, BPF_REG_2),
167         BPF_JMP_IMM(BPF_JEQ, BPF_REG_2, 0, 2),
168         BPF_MOV64_IMM(BPF_REG_0, 1),
169         BPF_EXIT_INSN(),
170         BPF_MOV64_IMM(BPF_REG_0, 2),
171         BPF_EXIT_INSN(),
172         },
173         .result = ACCEPT,
174         .retval = 2,
175 },
176 {
177         "jit: jsgt, jslt",
178         .insns = {
179         BPF_LD_IMM64(BPF_REG_1, 0x80000000ULL),
180         BPF_LD_IMM64(BPF_REG_2, 0x0ULL),
181         BPF_JMP_REG(BPF_JSGT, BPF_REG_1, BPF_REG_2, 2),
182         BPF_MOV64_IMM(BPF_REG_0, 1),
183         BPF_EXIT_INSN(),
184 
185         BPF_JMP_REG(BPF_JSLT, BPF_REG_2, BPF_REG_1, 2),
186         BPF_MOV64_IMM(BPF_REG_0, 1),
187         BPF_EXIT_INSN(),
188 
189         BPF_MOV64_IMM(BPF_REG_0, 2),
190         BPF_EXIT_INSN(),
191         },
192         .result = ACCEPT,
193         .retval = 2,
194 },
195 {
196         "jit: torturous jumps, imm8 nop jmp and pure jump padding",
197         .insns = { },
198         .fill_helper = bpf_fill_torturous_jumps,
199         .prog_type = BPF_PROG_TYPE_SCHED_CLS,
200         .result = ACCEPT,
201         .retval = 1,
202 },
203 {
204         "jit: torturous jumps, imm32 nop jmp and jmp_cond padding",
205         .insns = { },
206         .fill_helper = bpf_fill_torturous_jumps,
207         .prog_type = BPF_PROG_TYPE_SCHED_CLS,
208         .result = ACCEPT,
209         .retval = 2,
210 },
211 {
212         "jit: torturous jumps in subprog",
213         .insns = { },
214         .fill_helper = bpf_fill_torturous_jumps,
215         .prog_type = BPF_PROG_TYPE_SCHED_CLS,
216         .result = ACCEPT,
217         .retval = 3,
218 },
219 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php