summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Ryabinin <a.ryabinin@samsung.com>2015-03-24 18:31:24 +0300
committerRichard Weinberger <richard@nod.at>2015-04-13 22:16:12 +0300
commitfc9bea0e28db8cbfe0a08c1bfb1796bfd7adf49b (patch)
treefa8b8d965677995b82d270f751103cc7a8d41a51
parent0c9bd6365d0b278728359843b8303047ddedb831 (diff)
downloadlinux-fc9bea0e28db8cbfe0a08c1bfb1796bfd7adf49b.tar.xz
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>
-rw-r--r--arch/x86/um/asm/elf.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/um/asm/elf.h b/arch/x86/um/asm/elf.h
index 25a1022dd793..0a656b727b1a 100644
--- a/arch/x86/um/asm/elf.h
+++ b/arch/x86/um/asm/elf.h
@@ -210,7 +210,7 @@ extern int elf_core_copy_fpregs(struct task_struct *t, elf_fpregset_t *fpu);
#define ELF_EXEC_PAGESIZE 4096
-#define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3)
+#define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2)
extern long elf_aux_hwcap;
#define ELF_HWCAP (elf_aux_hwcap)