fs/binfmt_elf.c: fix ->start_code calculation

Only executable segments should be accounted to ->start_code just like
they do to ->end_code (correctly).

Link: http://lkml.kernel.org/r/20191208171410.GB19716@avx2
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Alexey Dobriyan 2020-01-30 22:16:52 -08:00 committed by Linus Torvalds
parent 1f83d80677
commit f67ef44629

View File

@ -999,7 +999,7 @@ static int load_elf_binary(struct linux_binprm *bprm)
}
}
k = elf_ppnt->p_vaddr;
if (k < start_code)
if ((elf_ppnt->p_flags & PF_X) && k < start_code)
start_code = k;
if (start_data < k)
start_data = k;