Back to home page

OSCL-LXR

 
 

    


0001 {
0002     "direct map access, write test 1",
0003     .insns = {
0004     BPF_MOV64_IMM(BPF_REG_0, 1),
0005     BPF_LD_MAP_VALUE(BPF_REG_1, 0, 0),
0006     BPF_ST_MEM(BPF_DW, BPF_REG_1, 0, 4242),
0007     BPF_EXIT_INSN(),
0008     },
0009     .fixup_map_array_48b = { 1 },
0010     .result = ACCEPT,
0011     .retval = 1,
0012 },
0013 {
0014     "direct map access, write test 2",
0015     .insns = {
0016     BPF_MOV64_IMM(BPF_REG_0, 1),
0017     BPF_LD_MAP_VALUE(BPF_REG_1, 0, 8),
0018     BPF_ST_MEM(BPF_DW, BPF_REG_1, 0, 4242),
0019     BPF_EXIT_INSN(),
0020     },
0021     .fixup_map_array_48b = { 1 },
0022     .result = ACCEPT,
0023     .retval = 1,
0024 },
0025 {
0026     "direct map access, write test 3",
0027     .insns = {
0028     BPF_MOV64_IMM(BPF_REG_0, 1),
0029     BPF_LD_MAP_VALUE(BPF_REG_1, 0, 8),
0030     BPF_ST_MEM(BPF_DW, BPF_REG_1, 8, 4242),
0031     BPF_EXIT_INSN(),
0032     },
0033     .fixup_map_array_48b = { 1 },
0034     .result = ACCEPT,
0035     .retval = 1,
0036 },
0037 {
0038     "direct map access, write test 4",
0039     .insns = {
0040     BPF_MOV64_IMM(BPF_REG_0, 1),
0041     BPF_LD_MAP_VALUE(BPF_REG_1, 0, 40),
0042     BPF_ST_MEM(BPF_DW, BPF_REG_1, 0, 4242),
0043     BPF_EXIT_INSN(),
0044     },
0045     .fixup_map_array_48b = { 1 },
0046     .result = ACCEPT,
0047     .retval = 1,
0048 },
0049 {
0050     "direct map access, write test 5",
0051     .insns = {
0052     BPF_MOV64_IMM(BPF_REG_0, 1),
0053     BPF_LD_MAP_VALUE(BPF_REG_1, 0, 32),
0054     BPF_ST_MEM(BPF_DW, BPF_REG_1, 8, 4242),
0055     BPF_EXIT_INSN(),
0056     },
0057     .fixup_map_array_48b = { 1 },
0058     .result = ACCEPT,
0059     .retval = 1,
0060 },
0061 {
0062     "direct map access, write test 6",
0063     .insns = {
0064     BPF_MOV64_IMM(BPF_REG_0, 1),
0065     BPF_LD_MAP_VALUE(BPF_REG_1, 0, 40),
0066     BPF_ST_MEM(BPF_DW, BPF_REG_1, 4, 4242),
0067     BPF_EXIT_INSN(),
0068     },
0069     .fixup_map_array_48b = { 1 },
0070     .result = REJECT,
0071     .errstr = "R1 min value is outside of the allowed memory range",
0072     .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
0073 },
0074 {
0075     "direct map access, write test 7",
0076     .insns = {
0077     BPF_MOV64_IMM(BPF_REG_0, 1),
0078     BPF_LD_MAP_VALUE(BPF_REG_1, 0, -1),
0079     BPF_ST_MEM(BPF_DW, BPF_REG_1, 4, 4242),
0080     BPF_EXIT_INSN(),
0081     },
0082     .fixup_map_array_48b = { 1 },
0083     .result = REJECT,
0084     .errstr = "direct value offset of 4294967295 is not allowed",
0085 },
0086 {
0087     "direct map access, write test 8",
0088     .insns = {
0089     BPF_MOV64_IMM(BPF_REG_0, 1),
0090     BPF_LD_MAP_VALUE(BPF_REG_1, 0, 1),
0091     BPF_ST_MEM(BPF_DW, BPF_REG_1, -1, 4242),
0092     BPF_EXIT_INSN(),
0093     },
0094     .fixup_map_array_48b = { 1 },
0095     .result = ACCEPT,
0096     .retval = 1,
0097 },
0098 {
0099     "direct map access, write test 9",
0100     .insns = {
0101     BPF_MOV64_IMM(BPF_REG_0, 1),
0102     BPF_LD_MAP_VALUE(BPF_REG_1, 0, 48),
0103     BPF_ST_MEM(BPF_DW, BPF_REG_1, 0, 4242),
0104     BPF_EXIT_INSN(),
0105     },
0106     .fixup_map_array_48b = { 1 },
0107     .result = REJECT,
0108     .errstr = "invalid access to map value pointer",
0109 },
0110 {
0111     "direct map access, write test 10",
0112     .insns = {
0113     BPF_MOV64_IMM(BPF_REG_0, 1),
0114     BPF_LD_MAP_VALUE(BPF_REG_1, 0, 47),
0115     BPF_ST_MEM(BPF_B, BPF_REG_1, 0, 4),
0116     BPF_EXIT_INSN(),
0117     },
0118     .fixup_map_array_48b = { 1 },
0119     .result = ACCEPT,
0120     .retval = 1,
0121 },
0122 {
0123     "direct map access, write test 11",
0124     .insns = {
0125     BPF_MOV64_IMM(BPF_REG_0, 1),
0126     BPF_LD_MAP_VALUE(BPF_REG_1, 0, 48),
0127     BPF_ST_MEM(BPF_B, BPF_REG_1, 0, 4),
0128     BPF_EXIT_INSN(),
0129     },
0130     .fixup_map_array_48b = { 1 },
0131     .result = REJECT,
0132     .errstr = "invalid access to map value pointer",
0133 },
0134 {
0135     "direct map access, write test 12",
0136     .insns = {
0137     BPF_MOV64_IMM(BPF_REG_0, 1),
0138     BPF_LD_MAP_VALUE(BPF_REG_1, 0, (1<<29)),
0139     BPF_ST_MEM(BPF_B, BPF_REG_1, 0, 4),
0140     BPF_EXIT_INSN(),
0141     },
0142     .fixup_map_array_48b = { 1 },
0143     .result = REJECT,
0144     .errstr = "direct value offset of 536870912 is not allowed",
0145 },
0146 {
0147     "direct map access, write test 13",
0148     .insns = {
0149     BPF_MOV64_IMM(BPF_REG_0, 1),
0150     BPF_LD_MAP_VALUE(BPF_REG_1, 0, (1<<29)-1),
0151     BPF_ST_MEM(BPF_B, BPF_REG_1, 0, 4),
0152     BPF_EXIT_INSN(),
0153     },
0154     .fixup_map_array_48b = { 1 },
0155     .result = REJECT,
0156     .errstr = "invalid access to map value pointer, value_size=48 off=536870911",
0157 },
0158 {
0159     "direct map access, write test 14",
0160     .insns = {
0161     BPF_MOV64_IMM(BPF_REG_0, 1),
0162     BPF_LD_MAP_VALUE(BPF_REG_1, 0, 47),
0163     BPF_LD_MAP_VALUE(BPF_REG_2, 0, 46),
0164     BPF_ST_MEM(BPF_H, BPF_REG_2, 0, 0xffff),
0165     BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1, 0),
0166     BPF_EXIT_INSN(),
0167     },
0168     .fixup_map_array_48b = { 1, 3 },
0169     .result = ACCEPT,
0170     .retval = 0xff,
0171 },
0172 {
0173     "direct map access, write test 15",
0174     .insns = {
0175     BPF_MOV64_IMM(BPF_REG_0, 1),
0176     BPF_LD_MAP_VALUE(BPF_REG_1, 0, 46),
0177     BPF_LD_MAP_VALUE(BPF_REG_2, 0, 46),
0178     BPF_ST_MEM(BPF_H, BPF_REG_2, 0, 0xffff),
0179     BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1, 0),
0180     BPF_EXIT_INSN(),
0181     },
0182     .fixup_map_array_48b = { 1, 3 },
0183     .result = ACCEPT,
0184     .retval = 0xffff,
0185 },
0186 {
0187     "direct map access, write test 16",
0188     .insns = {
0189     BPF_MOV64_IMM(BPF_REG_0, 1),
0190     BPF_LD_MAP_VALUE(BPF_REG_1, 0, 46),
0191     BPF_LD_MAP_VALUE(BPF_REG_2, 0, 47),
0192     BPF_ST_MEM(BPF_H, BPF_REG_2, 0, 0xffff),
0193     BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1, 0),
0194     BPF_EXIT_INSN(),
0195     },
0196     .fixup_map_array_48b = { 1, 3 },
0197     .result = REJECT,
0198     .errstr = "invalid access to map value, value_size=48 off=47 size=2",
0199     .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
0200 },
0201 {
0202     "direct map access, write test 17",
0203     .insns = {
0204     BPF_MOV64_IMM(BPF_REG_0, 1),
0205     BPF_LD_MAP_VALUE(BPF_REG_1, 0, 46),
0206     BPF_LD_MAP_VALUE(BPF_REG_2, 0, 46),
0207     BPF_ST_MEM(BPF_H, BPF_REG_2, 1, 0xffff),
0208     BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1, 0),
0209     BPF_EXIT_INSN(),
0210     },
0211     .fixup_map_array_48b = { 1, 3 },
0212     .result = REJECT,
0213     .errstr = "invalid access to map value, value_size=48 off=47 size=2",
0214     .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
0215 },
0216 {
0217     "direct map access, write test 18",
0218     .insns = {
0219     BPF_MOV64_IMM(BPF_REG_0, 1),
0220     BPF_LD_MAP_VALUE(BPF_REG_1, 0, 0),
0221     BPF_ST_MEM(BPF_H, BPF_REG_1, 0, 42),
0222     BPF_EXIT_INSN(),
0223     },
0224     .fixup_map_array_small = { 1 },
0225     .result = REJECT,
0226     .errstr = "R1 min value is outside of the allowed memory range",
0227 },
0228 {
0229     "direct map access, write test 19",
0230     .insns = {
0231     BPF_MOV64_IMM(BPF_REG_0, 1),
0232     BPF_LD_MAP_VALUE(BPF_REG_1, 0, 0),
0233     BPF_ST_MEM(BPF_B, BPF_REG_1, 0, 42),
0234     BPF_EXIT_INSN(),
0235     },
0236     .fixup_map_array_small = { 1 },
0237     .result = ACCEPT,
0238     .retval = 1,
0239 },
0240 {
0241     "direct map access, write test 20",
0242     .insns = {
0243     BPF_MOV64_IMM(BPF_REG_0, 1),
0244     BPF_LD_MAP_VALUE(BPF_REG_1, 0, 1),
0245     BPF_ST_MEM(BPF_B, BPF_REG_1, 0, 42),
0246     BPF_EXIT_INSN(),
0247     },
0248     .fixup_map_array_small = { 1 },
0249     .result = REJECT,
0250     .errstr = "invalid access to map value pointer",
0251 },
0252 {
0253     "direct map access, invalid insn test 1",
0254     .insns = {
0255     BPF_MOV64_IMM(BPF_REG_0, 1),
0256     BPF_LD_IMM64_RAW_FULL(BPF_REG_1, BPF_PSEUDO_MAP_VALUE, 0, 1, 0, 47),
0257     BPF_EXIT_INSN(),
0258     },
0259     .fixup_map_array_48b = { 1 },
0260     .result = REJECT,
0261     .errstr = "invalid bpf_ld_imm64 insn",
0262 },
0263 {
0264     "direct map access, invalid insn test 2",
0265     .insns = {
0266     BPF_MOV64_IMM(BPF_REG_0, 1),
0267     BPF_LD_IMM64_RAW_FULL(BPF_REG_1, BPF_PSEUDO_MAP_VALUE, 1, 0, 0, 47),
0268     BPF_EXIT_INSN(),
0269     },
0270     .fixup_map_array_48b = { 1 },
0271     .result = REJECT,
0272     .errstr = "BPF_LD_IMM64 uses reserved fields",
0273 },
0274 {
0275     "direct map access, invalid insn test 3",
0276     .insns = {
0277     BPF_MOV64_IMM(BPF_REG_0, 1),
0278     BPF_LD_IMM64_RAW_FULL(BPF_REG_1, BPF_PSEUDO_MAP_VALUE, ~0, 0, 0, 47),
0279     BPF_EXIT_INSN(),
0280     },
0281     .fixup_map_array_48b = { 1 },
0282     .result = REJECT,
0283     .errstr = "BPF_LD_IMM64 uses reserved fields",
0284 },
0285 {
0286     "direct map access, invalid insn test 4",
0287     .insns = {
0288     BPF_MOV64_IMM(BPF_REG_0, 1),
0289     BPF_LD_IMM64_RAW_FULL(BPF_REG_1, BPF_PSEUDO_MAP_VALUE, 0, ~0, 0, 47),
0290     BPF_EXIT_INSN(),
0291     },
0292     .fixup_map_array_48b = { 1 },
0293     .result = REJECT,
0294     .errstr = "invalid bpf_ld_imm64 insn",
0295 },
0296 {
0297     "direct map access, invalid insn test 5",
0298     .insns = {
0299     BPF_MOV64_IMM(BPF_REG_0, 1),
0300     BPF_LD_IMM64_RAW_FULL(BPF_REG_1, BPF_PSEUDO_MAP_VALUE, ~0, ~0, 0, 47),
0301     BPF_EXIT_INSN(),
0302     },
0303     .fixup_map_array_48b = { 1 },
0304     .result = REJECT,
0305     .errstr = "invalid bpf_ld_imm64 insn",
0306 },
0307 {
0308     "direct map access, invalid insn test 6",
0309     .insns = {
0310     BPF_MOV64_IMM(BPF_REG_0, 1),
0311     BPF_LD_IMM64_RAW_FULL(BPF_REG_1, BPF_PSEUDO_MAP_FD, ~0, 0, 0, 0),
0312     BPF_EXIT_INSN(),
0313     },
0314     .fixup_map_array_48b = { 1 },
0315     .result = REJECT,
0316     .errstr = "BPF_LD_IMM64 uses reserved fields",
0317 },
0318 {
0319     "direct map access, invalid insn test 7",
0320     .insns = {
0321     BPF_MOV64_IMM(BPF_REG_0, 1),
0322     BPF_LD_IMM64_RAW_FULL(BPF_REG_1, BPF_PSEUDO_MAP_FD, 0, ~0, 0, 0),
0323     BPF_EXIT_INSN(),
0324     },
0325     .fixup_map_array_48b = { 1 },
0326     .result = REJECT,
0327     .errstr = "invalid bpf_ld_imm64 insn",
0328 },
0329 {
0330     "direct map access, invalid insn test 8",
0331     .insns = {
0332     BPF_MOV64_IMM(BPF_REG_0, 1),
0333     BPF_LD_IMM64_RAW_FULL(BPF_REG_1, BPF_PSEUDO_MAP_FD, ~0, ~0, 0, 0),
0334     BPF_EXIT_INSN(),
0335     },
0336     .fixup_map_array_48b = { 1 },
0337     .result = REJECT,
0338     .errstr = "invalid bpf_ld_imm64 insn",
0339 },
0340 {
0341     "direct map access, invalid insn test 9",
0342     .insns = {
0343     BPF_MOV64_IMM(BPF_REG_0, 1),
0344     BPF_LD_IMM64_RAW_FULL(BPF_REG_1, BPF_PSEUDO_MAP_FD, 0, 0, 0, 47),
0345     BPF_EXIT_INSN(),
0346     },
0347     .fixup_map_array_48b = { 1 },
0348     .result = REJECT,
0349     .errstr = "unrecognized bpf_ld_imm64 insn",
0350 },