bpf: use kvzmalloc to allocate BPF verifier environment
authorRik van Riel <riel@surriel.com>
Tue, 8 Oct 2024 21:07:35 +0000 (17:07 -0400)
committerAlexei Starovoitov <ast@kernel.org>
Thu, 10 Oct 2024 01:13:05 +0000 (18:13 -0700)
commit434247637c66e1be2bc71a9987d4c3f0d8672387
treee260749f6211bdc90925bb4908d04cc54bb0d272
parent830b8e49424b15ca469e2a5b162c9ee818a113c6
bpf: use kvzmalloc to allocate BPF verifier environment

The kzmalloc call in bpf_check can fail when memory is very fragmented,
which in turn can lead to an OOM kill.

Use kvzmalloc to fall back to vmalloc when memory is too fragmented to
allocate an order 3 sized bpf verifier environment.

Admittedly this is not a very common case, and only happens on systems
where memory has already been squeezed close to the limit, but this does
not seem like much of a hot path, and it's a simple enough fix.

Signed-off-by: Rik van Riel <riel@surriel.com>
Reviewed-by: Shakeel Butt <shakeel.butt@linux.dev>
Link: https://lore.kernel.org/r/20241008170735.16766766@imladris.surriel.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
kernel/bpf/verifier.c