Properly check and propagate the return value of elf_truncate_section()
to avoid silent failures.

Signed-off-by: Josh Poimboeuf <jpoim...@kernel.org>
---
 tools/objtool/elf.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/tools/objtool/elf.c b/tools/objtool/elf.c
index b009d9feed76..19e249f4783c 100644
--- a/tools/objtool/elf.c
+++ b/tools/objtool/elf.c
@@ -1307,7 +1307,6 @@ static int elf_truncate_section(struct elf *elf, struct 
section *sec)
        for (;;) {
                /* get next data descriptor for the relevant section */
                data = elf_getdata(s, data);
-
                if (!data) {
                        if (size) {
                                ERROR("end of section data but non-zero size 
left\n");
@@ -1343,8 +1342,8 @@ int elf_write(struct elf *elf)
 
        /* Update changed relocation sections and section headers: */
        list_for_each_entry(sec, &elf->sections, list) {
-               if (sec->truncate)
-                       elf_truncate_section(elf, sec);
+               if (sec->truncate && elf_truncate_section(elf, sec))
+                       return -1;
 
                if (sec_changed(sec)) {
                        s = elf_getscn(elf->elf, sec->idx);
-- 
2.49.0


Reply via email to