OSDN Git Service

bpf: ensure that r0 is marked scratched after any function call
authorAndrii Nakryiko <andrii@kernel.org>
Thu, 2 Mar 2023 23:50:06 +0000 (15:50 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Sat, 4 Mar 2023 19:14:32 +0000 (11:14 -0800)
commit553a64a85c5d1dac277325a0f51a31c056593048
tree851f5e5f2d2ef4d1ce6ef9e7996843163cecdb58
parentc1ee85a9806a720aa054f68fe7f9c79418f36c2b
bpf: ensure that r0 is marked scratched after any function call

r0 is important (unless called function is void-returning, but that's
taken care of by print_verifier_state() anyways) in verifier logs.
Currently for helpers we seem to print it in verifier log, but for
kfuncs we don't.

Instead of figuring out where in the maze of code we accidentally set r0
as scratched for helpers and why we don't do that for kfuncs, just
enforce that after any function call r0 is marked as scratched.

Also, perhaps, we should reconsider "scratched" terminology, as it's
mightily confusing. "Touched" would seem more appropriate. But I left
that for follow ups for now.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/r/20230302235015.2044271-9-andrii@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
kernel/bpf/verifier.c