[<prev] [next>] [day] [month] [year] [list]
Message-Id: <1597194819-7384-1-git-send-email-tangyouling@loongson.cn>
Date: Wed, 12 Aug 2020 09:13:39 +0800
From: Youling Tang <tangyouling@...ngson.cn>
To: Josh Poimboeuf <jpoimboe@...hat.com>,
Peter Zijlstra <peterz@...radead.org>,
Kamalesh Babulal <kamalesh@...ux.vnet.ibm.com>
Cc: linux-kernel@...r.kernel.org
Subject: [PATCH v3] tools/objtool: Fix unnecessary jumps
Previously cleanup() function was called under the out label for both
fatal errors (ret < 0) and warnings. Now that cleanup() function is
removed, the out label is no longer required. Remove it and return
immediately for the fatal errors with ret as return code and 0 for
warnings.
Signed-off-by: Youling Tang <tangyouling@...ngson.cn>
Reviewed-by: Kamalesh Babulal <kamalesh@...ux.vnet.ibm.com>
---
tools/objtool/check.c | 30 ++++++++++--------------------
1 file changed, 10 insertions(+), 20 deletions(-)
diff --git a/tools/objtool/check.c b/tools/objtool/check.c
index e034a8f..b9bfcb5 100644
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -2799,19 +2799,19 @@ int check(const char *_objname, bool orc)
ret = decode_sections(&file);
if (ret < 0)
- goto out;
+ return ret;
warnings += ret;
if (list_empty(&file.insn_list))
- goto out;
+ return ret;
if (vmlinux && !validate_dup) {
ret = validate_vmlinux_functions(&file);
if (ret < 0)
- goto out;
+ return ret;
warnings += ret;
- goto out;
+ return 0;
}
if (retpoline) {
@@ -2823,45 +2823,35 @@ int check(const char *_objname, bool orc)
ret = validate_functions(&file);
if (ret < 0)
- goto out;
+ return ret;
warnings += ret;
ret = validate_unwind_hints(&file, NULL);
if (ret < 0)
- goto out;
+ return ret;
warnings += ret;
if (!warnings) {
ret = validate_reachable_instructions(&file);
if (ret < 0)
- goto out;
+ return ret;
warnings += ret;
}
if (orc) {
ret = create_orc(&file);
if (ret < 0)
- goto out;
+ return ret;
ret = create_orc_sections(&file);
if (ret < 0)
- goto out;
+ return ret;
}
if (file.elf->changed) {
ret = elf_write(file.elf);
if (ret < 0)
- goto out;
- }
-
-out:
- if (ret < 0) {
- /*
- * Fatal error. The binary is corrupt or otherwise broken in
- * some way, or objtool itself is broken. Fail the kernel
- * build.
- */
- return ret;
+ return ret;
}
return 0;
--
2.1.0
Powered by blists - more mailing lists