With latest llvm, bpf selftest test_progs, which has +alu32 enabled, failed for strobemeta.o and a few other subtests. The reason is due to that verifier did not provide better var_off.mask after jmp32 instructions. This patch set addressed this issue and after the fix, test_progs passed with alu32. Patch #1 provided detailed explanation of the problem and the fix. Patch #2 added three tests in test_verifier. Changelog: v1 -> v2: - do not directly manipulate tnum.{value,mask} in __reg_bound_offset32(), using tnum_lshift/tnum_rshift functions instead - do __reg_bound_offset32() after regular 64bit __reg_bound_offset() since the latter may give a better upper 32bit var_off, which can be inherited by __reg_bound_offset32(). Yonghong Song (2): bpf: provide better register bounds after jmp32 instructions tools/bpf: add verifier tests for better jmp32 register bounds kernel/bpf/verifier.c | 19 +++++ tools/testing/selftests/bpf/verifier/jmp32.c | 83 ++++++++++++++++++++ 2 files changed, 102 insertions(+) -- 2.17.1