diff options
-rw-r--r-- | arch/x86/net/bpf_jit_comp.c | 6 |
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: | |||
1236 | for (pass = 0; pass < 20 || image; pass++) { | 1236 | for (pass = 0; pass < 20 || image; pass++) { |
1237 | proglen = do_jit(prog, addrs, image, oldproglen, &ctx); | 1237 | proglen = do_jit(prog, addrs, image, oldproglen, &ctx); |
1238 | if (proglen <= 0) { | 1238 | if (proglen <= 0) { |
1239 | out_image: | ||
1239 | image = NULL; | 1240 | image = NULL; |
1240 | if (header) | 1241 | if (header) |
1241 | bpf_jit_binary_free(header); | 1242 | bpf_jit_binary_free(header); |
@@ -1246,8 +1247,7 @@ skip_init_addrs: | |||
1246 | if (proglen != oldproglen) { | 1247 | if (proglen != oldproglen) { |
1247 | pr_err("bpf_jit: proglen=%d != oldproglen=%d\n", | 1248 | pr_err("bpf_jit: proglen=%d != oldproglen=%d\n", |
1248 | proglen, oldproglen); | 1249 | proglen, oldproglen); |
1249 | prog = orig_prog; | 1250 | goto out_image; |
1250 | goto out_addrs; | ||
1251 | } | 1251 | } |
1252 | break; | 1252 | break; |
1253 | } | 1253 | } |
@@ -1283,7 +1283,7 @@ skip_init_addrs: | |||
1283 | prog = orig_prog; | 1283 | prog = orig_prog; |
1284 | } | 1284 | } |
1285 | 1285 | ||
1286 | if (!prog->is_func || extra_pass) { | 1286 | if (!image || !prog->is_func || extra_pass) { |
1287 | out_addrs: | 1287 | out_addrs: |
1288 | kfree(addrs); | 1288 | kfree(addrs); |
1289 | kfree(jit_data); | 1289 | kfree(jit_data); |