Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

x86, UML: fix integer overflow in ELF_ET_DYN_BASE

Almost all arches define ELF_ET_DYN_BASE as 2/3 of TASK_SIZE.
Though it seems that some architectures do this in a wrong way.
The problem is that 2*TASK_SIZE may overflow 32-bits so
the real ELF_ET_DYN_BASE becomes wrong.
Fix this overflow by dividing TASK_SIZE prior to multiplying:
(TASK_SIZE / 3 * 2)

Signed-off-by: Andrey Ryabinin <a.ryabinin@samsung.com>
Signed-off-by: Richard Weinberger <richard@nod.at>

authored by

Andrey Ryabinin and committed by
Richard Weinberger
fc9bea0e 0c9bd636

+1 -1
+1 -1
arch/x86/um/asm/elf.h
··· 210 210 211 211 #define ELF_EXEC_PAGESIZE 4096 212 212 213 - #define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3) 213 + #define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2) 214 214 215 215 extern long elf_aux_hwcap; 216 216 #define ELF_HWCAP (elf_aux_hwcap)