Selaa lähdekoodia

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>
Andrey Ryabinin 10 vuotta sitten
vanhempi
commit
940db9e654
1 muutettua tiedostoa jossa 1 lisäystä ja 1 poistoa
  1. 1 1
      arch/avr32/include/asm/elf.h

+ 1 - 1
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
    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.  */
    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
 /* This yields a mask that user programs can use to figure out what