Hello: This series was applied to bpf/bpf-next.git (master) by Alexei Starovoitov <ast@xxxxxxxxxx>: On Mon, 17 Apr 2023 15:21:34 -0700 you wrote: > In [1], I tried to remove bpf-specific codes to prevent certain > llvm optimizations, and add llvm TTI (target transform info) hooks > to prevent those optimizations. During this process, I found > if I enable llvm SimplifyCFG:shouldFoldTwoEntryPHINode > transformation, I will hit the following verification failure with selftests: > > ... > 8: (18) r1 = 0xffffc900001b2230 ; R1_w=map_value(off=560,ks=4,vs=564,imm=0) > 10: (61) r1 = *(u32 *)(r1 +0) ; R1_w=scalar(umax=4294967295,var_off=(0x0; 0xffffffff)) > ; if (skb->tstamp == EGRESS_ENDHOST_MAGIC) > 11: (79) r2 = *(u64 *)(r6 +152) ; R2_w=scalar() R6=ctx(off=0,imm=0) > ; if (skb->tstamp == EGRESS_ENDHOST_MAGIC) > 12: (55) if r2 != 0xb9fbeef goto pc+10 ; R2_w=195018479 > 13: (bc) w2 = w1 ; R1_w=scalar(umax=4294967295,var_off=(0x0; 0xffffffff)) R2_w=scalar(umax=4294967295,var_off=(0x0; 0xffffffff)) > ; if (test < __NR_TESTS) > 14: (a6) if w1 < 0x9 goto pc+1 16: R0=2 R1_w=scalar(umax=8,var_off=(0x0; 0xf)) R2_w=scalar(umax=4294967295,var_off=(0x0; 0xffffffff)) R6=ctx(off=0,imm=0) R10=fp0 > ; > 16: (27) r2 *= 28 ; R2_w=scalar(umax=120259084260,var_off=(0x0; 0x1ffffffffc),s32_max=2147483644,u32_max=-4) > 17: (18) r3 = 0xffffc900001b2118 ; R3_w=map_value(off=280,ks=4,vs=564,imm=0) > 19: (0f) r3 += r2 ; R2_w=scalar(umax=120259084260,var_off=(0x0; 0x1ffffffffc),s32_max=2147483644,u32_max=-4) R3_w=map_value(off=280,ks=4,vs=564,umax=120259084260,var_off=(0x0; 0x1ffffffffc),s32_max=2147483644,u32_max=-4) > 20: (61) r2 = *(u32 *)(r3 +0) > R3 unbounded memory access, make sure to bounds check any such access > processed 97 insns (limit 1000000) max_states_per_insn 1 total_states 10 peak_states 10 mark_read 6 > -- END PROG LOAD LOG -- > libbpf: prog 'ingress_fwdns_prio100': failed to load: -13 > libbpf: failed to load object 'test_tc_dtime' > libbpf: failed to load BPF skeleton 'test_tc_dtime': -13 > ... > > [...] Here is the summary with links: - [bpf-next,v2,1/2] bpf: Improve verifier u32 scalar equality checking https://git.kernel.org/bpf/bpf-next/c/3be49f79555e - [bpf-next,v2,2/2] selftests/bpf: Add a selftest for checking subreg equality https://git.kernel.org/bpf/bpf-next/c/49859de997c3 You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html