diff options
author | Andrey Ryabinin <a.ryabinin@samsung.com> | 2015-03-24 18:31:22 +0300 |
---|---|---|
committer | Hans-Christian Egtvedt <egtvedt@samfundet.no> | 2015-04-13 18:48:55 +0200 |
commit | 940db9e654dab0cb68b5b9ec52f627945807aac9 (patch) | |
tree | 3c1d03aa5aaae3bad9d9631954e63ca42b533a41 /arch/avr32 | |
parent | 39a8804455fb23f09157341d3ba7db6d7ae6ee76 (diff) | |
download | linux-940db9e654dab0cb68b5b9ec52f627945807aac9.tar.gz linux-940db9e654dab0cb68b5b9ec52f627945807aac9.tar.bz2 linux-940db9e654dab0cb68b5b9ec52f627945807aac9.zip |
avr32: 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>
Acked-by: Hans-Christian Egtvedt <egtvedt@samfundet.no>
Diffstat (limited to 'arch/avr32')
-rw-r--r-- | arch/avr32/include/asm/elf.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/avr32/include/asm/elf.h b/arch/avr32/include/asm/elf.h index d232888b99d5..0388ece75b02 100644 --- a/arch/avr32/include/asm/elf.h +++ b/arch/avr32/include/asm/elf.h @@ -84,7 +84,7 @@ typedef struct user_fpu_struct elf_fpregset_t; the loader. We need to make sure that it is out of the way of the program that it will "exec", and that there is sufficient room for the brk. */ -#define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3) +#define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2) /* This yields a mask that user programs can use to figure out what |