summaryrefslogtreecommitdiff
path: root/tools/objtool/check.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/objtool/check.c')
-rw-r--r--tools/objtool/check.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/tools/objtool/check.c b/tools/objtool/check.c
index 8b1a6a5185d3..21d45a35f3c9 100644
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -4926,8 +4926,6 @@ int check(struct objtool_file *file)
goto out;
}
- free_insns(file);
-
if (opts.stats) {
printf("nr_insns_visited: %ld\n", nr_insns_visited);
printf("nr_cfi: %ld\n", nr_cfi);
@@ -4936,8 +4934,10 @@ int check(struct objtool_file *file)
}
out:
- if (!ret && !warnings)
+ if (!ret && !warnings) {
+ free_insns(file);
return 0;
+ }
if (opts.werror && warnings)
ret = 1;
@@ -4946,10 +4946,14 @@ out:
if (opts.werror && warnings)
WARN("%d warning(s) upgraded to errors", warnings);
disas_ctx = disas_context_create(file);
- disas_warned_funcs(disas_ctx);
- disas_context_destroy(disas_ctx);
+ if (disas_ctx) {
+ disas_warned_funcs(disas_ctx);
+ disas_context_destroy(disas_ctx);
+ }
}
+ free_insns(file);
+
if (opts.backup && make_backup())
return 1;