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

cris: 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: Jesper Nilsson <jespern@axis.com>

authored by

Andrey Ryabinin and committed by
Jesper Nilsson
d939b52a d3dad475

+1 -1
+1 -1
arch/cris/include/asm/elf.h
··· 71 71 the loader. We need to make sure that it is out of the way of the program 72 72 that it will "exec", and that there is sufficient room for the brk. */ 73 73 74 - #define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3) 74 + #define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2) 75 75 76 76 /* This yields a mask that user programs can use to figure out what 77 77 instruction set this CPU supports. This could be done in user space,