From: Rolf Eike Beer <eb@emlix.com>
Date: Wed, 19 Oct 2022 07:52:16 +0000 (+0200)
Subject: binfmt_elf: simplify error handling in load_elf_phdrs()
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=ef20c5139c3157b5c6eda46f496952bddffe9ad6;p=linux.git

binfmt_elf: simplify error handling in load_elf_phdrs()

The err variable was the same like retval, but capped to <= 0. This is the
same as retval as elf_read() never returns positive values.

Signed-off-by: Rolf Eike Beer <eb@emlix.com>
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/4137126.7Qn9TF0dmF@mobilepool36.emlix.com
---

diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index 71df1a3c2dac9..528e2ac8931f3 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -462,7 +462,7 @@ static struct elf_phdr *load_elf_phdrs(const struct elfhdr *elf_ex,
 				       struct file *elf_file)
 {
 	struct elf_phdr *elf_phdata = NULL;
-	int retval, err = -1;
+	int retval = -1;
 	unsigned int size;
 
 	/*
@@ -484,15 +484,9 @@ static struct elf_phdr *load_elf_phdrs(const struct elfhdr *elf_ex,
 
 	/* Read in the program headers */
 	retval = elf_read(elf_file, elf_phdata, size, elf_ex->e_phoff);
-	if (retval < 0) {
-		err = retval;
-		goto out;
-	}
 
-	/* Success! */
-	err = 0;
 out:
-	if (err) {
+	if (retval) {
 		kfree(elf_phdata);
 		elf_phdata = NULL;
 	}