summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexei Starovoitov <ast@kernel.org>2018-05-02 12:35:47 -0700
committerAlexei Starovoitov <ast@kernel.org>2018-05-02 12:35:48 -0700
commit0f58e58e2803a83753f7e626cd3654cea601308d (patch)
tree90948a3fd08f29e11319d8abd69b4af30db21070
parenta4e21ff8d9a311b16cfa9e41aed0c627a47149a4 (diff)
parent39f56ca945af86112753646316c4c92dcd4acd82 (diff)
downloadlinux-0f58e58e2803a83753f7e626cd3654cea601308d.tar.gz
linux-0f58e58e2803a83753f7e626cd3654cea601308d.tar.bz2
linux-0f58e58e2803a83753f7e626cd3654cea601308d.zip
Merge branch 'x86-bpf-jit-fixes'
Daniel Borkmann says: ==================== Fix two memory leaks in x86 JIT. For details, please see individual patches in this series. Thanks! ==================== Signed-off-by: Alexei Starovoitov <ast@kernel.org>
-rw-r--r--arch/x86/net/bpf_jit_comp.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c
index abce27ceb411..263c8453815e 100644
--- a/arch/x86/net/bpf_jit_comp.c
+++ b/arch/x86/net/bpf_jit_comp.c
@@ -1236,6 +1236,7 @@ skip_init_addrs:
for (pass = 0; pass < 20 || image; pass++) {
proglen = do_jit(prog, addrs, image, oldproglen, &ctx);
if (proglen <= 0) {
+out_image:
image = NULL;
if (header)
bpf_jit_binary_free(header);
@@ -1246,8 +1247,7 @@ skip_init_addrs:
if (proglen != oldproglen) {
pr_err("bpf_jit: proglen=%d != oldproglen=%d\n",
proglen, oldproglen);
- prog = orig_prog;
- goto out_addrs;
+ goto out_image;
}
break;
}
@@ -1283,7 +1283,7 @@ skip_init_addrs:
prog = orig_prog;
}
- if (!prog->is_func || extra_pass) {
+ if (!image || !prog->is_func || extra_pass) {
out_addrs:
kfree(addrs);
kfree(jit_data);