github.com/datadog/cilium@v1.6.12/bpf/probes/raw_mark_map_val.t (about) 1 /* Tests for availability of kernel commits (4.9.17+): 2 * 3 * 6760bf2ddde8 ("bpf: fix mark_reg_unknown_value for spilled regs on map value marking") 4 * a08dd0da5307 ("bpf: fix regression on verifier pruning wrt map lookups") 5 * d2a4dd37f6b4 ("bpf: fix state equivalence") 6 * 57a09bf0a416 ("bpf: Detect identical PTR_TO_MAP_VALUE_OR_NULL registers") 7 */ 8 { 9 .emits = "HAVE_MARK_MAP_VALS", 10 .type = BPF_PROG_TYPE_SCHED_CLS, 11 .insns = { 12 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10), 13 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8), 14 BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0), 15 BPF_LD_MAP_FD(BPF_REG_1, 0), 16 BPF_EMIT_CALL(BPF_FUNC_map_lookup_elem), 17 BPF_MOV64_REG(BPF_REG_1, BPF_REG_10), 18 BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, -152), 19 BPF_STX_MEM(BPF_DW, BPF_REG_1, BPF_REG_0, 0), 20 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 2), 21 BPF_LDX_MEM(BPF_DW, BPF_REG_3, BPF_REG_1, 0), 22 BPF_ST_MEM(BPF_DW, BPF_REG_3, 0, 42), 23 BPF_EXIT_INSN(), 24 }, 25 .fixup_map = { 26 { 27 .off = 3, 28 .type = BPF_MAP_TYPE_HASH, 29 .size_key = 8, 30 .size_val = 8, 31 }, 32 }, 33 .warn = "Verifier is too old to detect identical registers " 34 "with map value after bpf_map_lookup_elem(). Some " 35 "clang versions might generate code that spills such " 36 "registers to stack before a NULL test. Recommendation " 37 "is to run 4.9.17+ kernels.", 38 },