Message ID | 20220208062533.3802081-1-song@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Commit | f95f768f0af4cec806ce86cd67934a10617d96d0 |
Delegated to: | BPF |
Headers | show |
Series | [bpf-next] bpf, x86_64: fail gracefully on bpf_jit_binary_pack_finalize failures | expand |
On Mon, Feb 7, 2022 at 10:26 PM Song Liu <song@kernel.org> wrote: > > 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 <song@kernel.org> > --- > arch/x86/net/bpf_jit_comp.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c > index 643f38b91e30..08e8fd8f954a 100644 > --- a/arch/x86/net/bpf_jit_comp.c > +++ b/arch/x86/net/bpf_jit_comp.c > @@ -2380,7 +2380,11 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog) > * > * Both cases are serious bugs that we should not continue. I tweaked that comment a bit, since it's no longer accurate and pushed to bpf-next. Thanks! > */ > - 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; > -- > 2.30.2 >
Hello: This patch was applied to bpf/bpf-next.git (master) by Alexei Starovoitov <ast@kernel.org>: On Mon, 7 Feb 2022 22:25:33 -0800 you wrote: > 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 <song@kernel.org> > --- > arch/x86/net/bpf_jit_comp.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) Here is the summary with links: - [bpf-next] bpf, x86_64: fail gracefully on bpf_jit_binary_pack_finalize failures https://git.kernel.org/bpf/bpf-next/c/f95f768f0af4 You are awesome, thank you!
> On Feb 8, 2022, at 9:28 AM, Alexei Starovoitov <alexei.starovoitov@gmail.com> wrote: > > On Mon, Feb 7, 2022 at 10:26 PM Song Liu <song@kernel.org> wrote: >> >> 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 <song@kernel.org> >> --- >> arch/x86/net/bpf_jit_comp.c | 6 +++++- >> 1 file changed, 5 insertions(+), 1 deletion(-) >> >> diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c >> index 643f38b91e30..08e8fd8f954a 100644 >> --- a/arch/x86/net/bpf_jit_comp.c >> +++ b/arch/x86/net/bpf_jit_comp.c >> @@ -2380,7 +2380,11 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog) >> * >> * Both cases are serious bugs that we should not continue. > > I tweaked that comment a bit, since it's no longer accurate and > pushed to bpf-next. > Thanks! Thanks for the fix! I had that in mind initially, but forgot about it when I got to the keyboard. Song
diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c index 643f38b91e30..08e8fd8f954a 100644 --- a/arch/x86/net/bpf_jit_comp.c +++ b/arch/x86/net/bpf_jit_comp.c @@ -2380,7 +2380,11 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog) * * Both cases are serious bugs that we should not continue. */ - 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;
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 <song@kernel.org> --- arch/x86/net/bpf_jit_comp.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)