cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

dead_code.c (4036B)


      1{
      2	"dead code: start",
      3	.insns = {
      4	BPF_JMP_IMM(BPF_JA, 0, 0, 2),
      5	BPF_LDX_MEM(BPF_B, BPF_REG_8, BPF_REG_9, 0),
      6	BPF_JMP_IMM(BPF_JA, 0, 0, 2),
      7	BPF_MOV64_IMM(BPF_REG_0, 7),
      8	BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, -4),
      9	BPF_EXIT_INSN(),
     10	},
     11	.errstr_unpriv = "R9 !read_ok",
     12	.result_unpriv = REJECT,
     13	.result = ACCEPT,
     14	.retval = 7,
     15},
     16{
     17	"dead code: mid 1",
     18	.insns = {
     19	BPF_MOV64_IMM(BPF_REG_0, 7),
     20	BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 0, 1),
     21	BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 0),
     22	BPF_EXIT_INSN(),
     23	},
     24	.result = ACCEPT,
     25	.retval = 7,
     26},
     27{
     28	"dead code: mid 2",
     29	.insns = {
     30	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
     31	BPF_JMP_IMM(BPF_JSET, BPF_REG_0, 1, 4),
     32	BPF_JMP_IMM(BPF_JSET, BPF_REG_0, 1, 1),
     33	BPF_JMP_IMM(BPF_JA, 0, 0, 2),
     34	BPF_MOV64_IMM(BPF_REG_0, 7),
     35	BPF_EXIT_INSN(),
     36	BPF_MOV64_IMM(BPF_REG_0, 1),
     37	BPF_EXIT_INSN(),
     38	},
     39	.result = ACCEPT,
     40	.retval = 1,
     41},
     42{
     43	"dead code: end 1",
     44	.insns = {
     45	BPF_MOV64_IMM(BPF_REG_0, 7),
     46	BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 1),
     47	BPF_EXIT_INSN(),
     48	BPF_EXIT_INSN(),
     49	},
     50	.result = ACCEPT,
     51	.retval = 7,
     52},
     53{
     54	"dead code: end 2",
     55	.insns = {
     56	BPF_MOV64_IMM(BPF_REG_0, 7),
     57	BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 1),
     58	BPF_EXIT_INSN(),
     59	BPF_MOV64_IMM(BPF_REG_0, 12),
     60	BPF_EXIT_INSN(),
     61	},
     62	.result = ACCEPT,
     63	.retval = 7,
     64},
     65{
     66	"dead code: end 3",
     67	.insns = {
     68	BPF_MOV64_IMM(BPF_REG_0, 7),
     69	BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 8, 1),
     70	BPF_EXIT_INSN(),
     71	BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 1),
     72	BPF_JMP_IMM(BPF_JA, 0, 0, 1),
     73	BPF_MOV64_IMM(BPF_REG_0, 12),
     74	BPF_JMP_IMM(BPF_JA, 0, 0, -5),
     75	},
     76	.result = ACCEPT,
     77	.retval = 7,
     78},
     79{
     80	"dead code: tail of main + func",
     81	.insns = {
     82	BPF_MOV64_IMM(BPF_REG_0, 7),
     83	BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 8, 1),
     84	BPF_EXIT_INSN(),
     85	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1),
     86	BPF_EXIT_INSN(),
     87	BPF_MOV64_IMM(BPF_REG_0, 12),
     88	BPF_EXIT_INSN(),
     89	},
     90	.errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for",
     91	.result_unpriv = REJECT,
     92	.result = ACCEPT,
     93	.retval = 7,
     94},
     95{
     96	"dead code: tail of main + two functions",
     97	.insns = {
     98	BPF_MOV64_IMM(BPF_REG_0, 7),
     99	BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 8, 1),
    100	BPF_EXIT_INSN(),
    101	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1),
    102	BPF_EXIT_INSN(),
    103	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1),
    104	BPF_EXIT_INSN(),
    105	BPF_MOV64_IMM(BPF_REG_0, 12),
    106	BPF_EXIT_INSN(),
    107	},
    108	.errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for",
    109	.result_unpriv = REJECT,
    110	.result = ACCEPT,
    111	.retval = 7,
    112},
    113{
    114	"dead code: function in the middle and mid of another func",
    115	.insns = {
    116	BPF_MOV64_IMM(BPF_REG_1, 7),
    117	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 3),
    118	BPF_EXIT_INSN(),
    119	BPF_MOV64_IMM(BPF_REG_0, 12),
    120	BPF_EXIT_INSN(),
    121	BPF_MOV64_IMM(BPF_REG_0, 7),
    122	BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 7, 1),
    123	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, -5),
    124	BPF_EXIT_INSN(),
    125	},
    126	.errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for",
    127	.result_unpriv = REJECT,
    128	.result = ACCEPT,
    129	.retval = 7,
    130},
    131{
    132	"dead code: middle of main before call",
    133	.insns = {
    134	BPF_MOV64_IMM(BPF_REG_1, 2),
    135	BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 2, 1),
    136	BPF_MOV64_IMM(BPF_REG_1, 5),
    137	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1),
    138	BPF_EXIT_INSN(),
    139	BPF_MOV64_REG(BPF_REG_0, BPF_REG_1),
    140	BPF_EXIT_INSN(),
    141	},
    142	.errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for",
    143	.result_unpriv = REJECT,
    144	.result = ACCEPT,
    145	.retval = 2,
    146},
    147{
    148	"dead code: start of a function",
    149	.insns = {
    150	BPF_MOV64_IMM(BPF_REG_1, 2),
    151	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1),
    152	BPF_EXIT_INSN(),
    153	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
    154	BPF_MOV64_REG(BPF_REG_0, BPF_REG_1),
    155	BPF_EXIT_INSN(),
    156	},
    157	.errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for",
    158	.result_unpriv = REJECT,
    159	.result = ACCEPT,
    160	.retval = 2,
    161},
    162{
    163	"dead code: zero extension",
    164	.insns = {
    165	BPF_MOV64_IMM(BPF_REG_0, 0),
    166	BPF_STX_MEM(BPF_W, BPF_REG_10, BPF_REG_0, -4),
    167	BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 0, 1),
    168	BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_10, -4),
    169	BPF_EXIT_INSN(),
    170	},
    171	.result = ACCEPT,
    172	.retval = 0,
    173},