From f95f768f0af4cec806ce86cd67934a10617d96d0 Mon Sep 17 00:00:00 2001 From: Song Liu Date: Mon, 7 Feb 2022 22:25:33 -0800 Subject: [PATCH] bpf, x86_64: Fail gracefully on bpf_jit_binary_pack_finalize failures Instead of BUG_ON(), fail gracefully and return orig_prog. Fixes: 1022a5498f6f ("bpf, x86_64: Use bpf_jit_binary_pack_alloc") Signed-off-by: Song Liu Signed-off-by: Alexei Starovoitov Link: https://lore.kernel.org/bpf/20220208062533.3802081-1-song@kernel.org --- arch/x86/net/bpf_jit_comp.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c index 643f38b91e30..c7db0fe4de2f 100644 --- a/arch/x86/net/bpf_jit_comp.c +++ b/arch/x86/net/bpf_jit_comp.c @@ -2378,9 +2378,13 @@ out_image: * 1) header is not pointing to proper module memory; * 2) the arch doesn't support bpf_arch_text_copy(). * - * Both cases are serious bugs that we should not continue. + * Both cases are serious bugs and justify WARN_ON. */ - BUG_ON(bpf_jit_binary_pack_finalize(prog, header, rw_header)); + if (WARN_ON(bpf_jit_binary_pack_finalize(prog, header, rw_header))) { + prog = orig_prog; + goto out_addrs; + } + bpf_tail_call_direct_fixup(prog); } else { jit_data->addrs = addrs;