mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-06-21 15:43:21 +02:00
bpf: Fix arg_track_join log to use sa prefix for stack arg slots
arg_track_join() logs state transitions at CFG merge points. For
stack arg slots (r >= MAX_BPF_REG), it printed "r11:", "r12:", etc.,
which is misleading since r11 is a special register (BPF_REG_PARAMS)
not meaningful to the user.
Fix it to print "sa0:", "sa1:", etc., matching the per-instruction
transition log in arg_track_log() which already uses the "sa" prefix.
Update the existing stack_arg_pruning_type_mismatch selftest to expect
the corrected format.
Fixes: 2af4e79277 ("bpf: Extend liveness analysis to track stack argument slots")
Signed-off-by: Yonghong Song <yonghong.song@linux.dev>
Link: https://lore.kernel.org/r/20260515225056.823086-1-yonghong.song@linux.dev
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
committed by
Alexei Starovoitov
parent
0e2647792f
commit
d1dbe443a0
@@ -806,7 +806,9 @@ static bool arg_track_join(struct bpf_verifier_env *env, int idx, int target, in
|
||||
return true;
|
||||
|
||||
verbose(env, "arg JOIN insn %d -> %d ", idx, target);
|
||||
if (r >= 0)
|
||||
if (r >= MAX_BPF_REG)
|
||||
verbose(env, "sa%d: ", r - MAX_BPF_REG);
|
||||
else if (r >= 0)
|
||||
verbose(env, "r%d: ", r);
|
||||
else
|
||||
verbose(env, "fp%+d: ", r * 8);
|
||||
|
||||
@@ -117,7 +117,7 @@ __description("stack_arg: pruning with different stack arg types")
|
||||
__failure __log_level(2)
|
||||
__flag(BPF_F_TEST_STATE_FREQ)
|
||||
__msg("arg JOIN insn 9 -> 10 r1: fp0-8 + _ => fp0-8|fp0+0")
|
||||
__msg("arg JOIN insn 9 -> 10 r11: fp0-8 + _ => fp0-8|fp0+0")
|
||||
__msg("arg JOIN insn 9 -> 10 sa0: fp0-8 + _ => fp0-8|fp0+0")
|
||||
__msg("R{{[0-9]}} invalid mem access 'scalar'")
|
||||
__naked void stack_arg_pruning_type_mismatch(void)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user