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.
Showing the changes to kernel (1 of 2 files). Show all
Unified · Split
| @@ -806,7 +806,9 @@ static bool arg_track_join(struct bpf_verifier_env *env, int idx, int target, in · 805 unmodified lines | ||
| 806 | 806 | return true; |
| 807 | 807 | |
| 808 | 808 | verbose(env, "arg JOIN insn %d -> %d ", idx, target); |
| 809 | − if (r >= 0) | |
| 809 | + if (r >= MAX_BPF_REG) | |
| 810 | + verbose(env, "sa%d: ", r - MAX_BPF_REG); | |
| 811 | + else if (r >= 0) | |
| 810 | 812 | verbose(env, "r%d: ", r); |
| 811 | 813 | else |
| 812 | 814 | verbose(env, "fp%+d: ", r * 8); |