diff options
| author | Eduard Zingerman <eddyz87@gmail.com> | 2026-09-04 01:33:22 -0700 |
|---|---|---|
| committer | Kumar Kartikeya Dwivedi <memxor@gmail.com> | 2026-09-04 12:58:04 +0200 |
| commit | e51179a4e09846f8fd0f26a05068520de2b301bf (patch) | |
| tree | 68928c7a5d99a861d1ebc9e38708fba0600488e5 /scripts/Makefile.thinlto | |
| parent | bc412b3fb185540112fcc99ac91a14e57418d28e (diff) | |
| download | linux-e51179a4e09846f8fd0f26a05068520de2b301bf.tar.gz linux-e51179a4e09846f8fd0f26a05068520de2b301bf.zip | |
bpf: Don't predict JMP32 pointer vs zero comparisons
Consider the following program:
r1 = map_value; /* low 32 bits are zero at runtime */
r6 = 0xdead000000000000;
if w1 != 0 goto l1;
l0: r1 += r6;
r2 = *(u64 *)(r1 + 0);
exit;
l1: r6 = 0;
goto l0;
At the moment is_branch_taken() reports the jump as always taken,
because it does not distinguish between BPF_JMP and BPF_JMP32
comparisons when processing 'if w1 != 0 ...'.
Fixes: cac616db39c2 ("bpf: Verifier track null pointer branch_taken with JNE and JEQ")
Reported-by: Nicholas Carlini <npc@anthropic.com>
Suggested-by: Nicholas Carlini <npc@anthropic.com>
Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
Link: https://lore.kernel.org/bpf/20260904083325.2083493-5-eddyz87@gmail.com
Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions
