bpf: reduce verifier memory consumption
authorAlexei Starovoitov <ast@fb.com>
Wed, 1 Nov 2017 01:16:05 +0000 (18:16 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 1 Nov 2017 02:41:18 +0000 (11:41 +0900)
commit638f5b90d46016372a8e3e0a434f199cc5e12b8c
tree3624ef0d07889242a327ef94f2d228d0b6384a14
parent3179698d48eb2ac19387a9c5e971314e22239b12
bpf: reduce verifier memory consumption

the verifier got progressively smarter over time and size of its internal
state grew as well. Time to reduce the memory consumption.

Before:
sizeof(struct bpf_verifier_state) = 6520
After:
sizeof(struct bpf_verifier_state) = 896

It's done by observing that majority of BPF programs use little to
no stack whereas verifier kept all of 512 stack slots ready always.
Instead dynamically reallocate struct verifier state when stack
access is detected.
Runtime difference before vs after is within a noise.
The number of processed instructions stays the same.

Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/netronome/nfp/bpf/verifier.c
include/linux/bpf_verifier.h
kernel/bpf/verifier.c