bpf: properly reset caller saved regs after helper call and ld_abs/ind
authorDaniel Borkmann <daniel@iogearbox.net>
Wed, 24 May 2017 23:05:06 +0000 (01:05 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 25 May 2017 17:44:27 +0000 (13:44 -0400)
commita9789ef9afcb4fb0193f8dd94f2665ba3ad71e79
treef2709d8120df7b4368ca173096b7260625965021
parent1ad2f5838d345e1c102bd1cd27c4f4c1349b0dc8
bpf: properly reset caller saved regs after helper call and ld_abs/ind

Currently, after performing helper calls, we clear all caller saved
registers, that is r0 - r5 and fill r0 depending on struct bpf_func_proto
specification. The way we reset these regs can affect pruning decisions
in later paths, since we only reset register's imm to 0 and type to
NOT_INIT. However, we leave out clearing of other variables such as id,
min_value, max_value, etc, which can later on lead to pruning mismatches
due to stale data.

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
kernel/bpf/verifier.c