summaryrefslogtreecommitdiff
path: root/include/linux/timerqueue.h
diff options
context:
space:
mode:
authorAlexei Starovoitov <ast@kernel.org>2026-10-24 03:58:06 +0000
committerAlexei Starovoitov <ast@kernel.org>2026-10-24 03:58:13 +0000
commite27c798425407fcbab81f40de4f1a37ab039edb5 (patch)
tree6ef51708fffca3f3d43e2bdc5aeebce52eaa9e26 /include/linux/timerqueue.h
parentfb2b27d214c3b88d926a303267dd83cfdb428b13 (diff)
parenta938f51d3522b9ff1fbe1171d9504d584a40eb58 (diff)
Merge branch 'bpf-fix-x86-jit-stopping-before-jumps-converge'
Mykyta Yatsenko says: ==================== bpf: Fix x86 JIT stopping before jumps converge The x86 JIT stops its sizing passes once two passes give the same image length. A backward jump can grow while other jumps shrink, so the length may repeat with jump sizes still changing. The final pass then emits code of a different size than was sized, hits "bpf_jit: fatal error" and the program fails to load with -ENOTSUPP. Patch 1 sizes backward jumps by the insns they jump over, so no insn grows between passes and a repeated length means nothing moved. Patch 2 adds a selftest which fails to load without the fix. This was hit in CI by cgroup_tcp_skb with the unpublished branch inversion series, whose layout change happened to trigger it. Signed-off-by: Mykyta Yatsenko <yatsenko@meta.com> --- Changes in v2: - Size backward jumps by the insns they jump over instead of checking for moved insns, drop the ja -1 special case and the imm8 limit of 123 (Alexei) - Start every insn at BPF_MAX_INSN_SIZE, so none grows in the first pass - Check that the selftest program is JITed - Link to v1: https://patch.msgid.link/20261021-jit_size_fix-v1-0-b89fd32cafd6@meta.com ==================== Link: https://patch.msgid.link/20261022-jit_size_fix-v2-0-4bee6921b218@meta.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'include/linux/timerqueue.h')
0 files changed, 0 insertions, 0 deletions