Subject: + x86-get_unmapped_area-use-proper-mmap-base-for-bottom-up-direction.patch added to -mm tree To: sinaelgl@xxxxxxxxx,mingo@xxxxxxxxxx,molecula2788@xxxxxxxxx,oleg@xxxxxxxxxx,riel@xxxxxxxxxx,stable@xxxxxxxxxxxxxxx,walken@xxxxxxxxxx From: akpm@xxxxxxxxxxxxxxxxxxxx Date: Mon, 29 Jul 2013 16:54:52 -0700 The patch titled Subject: x86 get_unmapped_area(): use proper mmap base for bottom-up direction has been added to the -mm tree. Its filename is x86-get_unmapped_area-use-proper-mmap-base-for-bottom-up-direction.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/x86-get_unmapped_area-use-proper-mmap-base-for-bottom-up-direction.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/x86-get_unmapped_area-use-proper-mmap-base-for-bottom-up-direction.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Radu Caragea <sinaelgl@xxxxxxxxx> Subject: x86 get_unmapped_area(): use proper mmap base for bottom-up direction When the stack is set to unlimited, the bottomup direction is used for mmap-ings but the mmap_base is not used and thus effectively renders ASLR for mmap-ings along with PIE useless. This was caused by f99024729e689 ("mm: use vm_unmapped_area() on x86_64 architecture"). Cc: Michel Lespinasse <walken@xxxxxxxxxx> Cc: Oleg Nesterov <oleg@xxxxxxxxxx> Reviewed-by: Rik van Riel <riel@xxxxxxxxxx> Acked-by: Ingo Molnar <mingo@xxxxxxxxxx> Cc: Adrian Sendroiu <molecula2788@xxxxxxxxx> Cc: <stable@xxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- arch/x86/kernel/sys_x86_64.c | 2 +- arch/x86/mm/mmap.c | 2 +- include/linux/sched.h | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff -puN arch/x86/kernel/sys_x86_64.c~x86-get_unmapped_area-use-proper-mmap-base-for-bottom-up-direction arch/x86/kernel/sys_x86_64.c --- a/arch/x86/kernel/sys_x86_64.c~x86-get_unmapped_area-use-proper-mmap-base-for-bottom-up-direction +++ a/arch/x86/kernel/sys_x86_64.c @@ -101,7 +101,7 @@ static void find_start_end(unsigned long *begin = new_begin; } } else { - *begin = TASK_UNMAPPED_BASE; + *begin = mmap_legacy_base(); *end = TASK_SIZE; } } diff -puN arch/x86/mm/mmap.c~x86-get_unmapped_area-use-proper-mmap-base-for-bottom-up-direction arch/x86/mm/mmap.c --- a/arch/x86/mm/mmap.c~x86-get_unmapped_area-use-proper-mmap-base-for-bottom-up-direction +++ a/arch/x86/mm/mmap.c @@ -98,7 +98,7 @@ static unsigned long mmap_base(void) * Bottom-up (legacy) layout on X86_32 did not support randomization, X86_64 * does, but not when emulating X86_32 */ -static unsigned long mmap_legacy_base(void) +unsigned long mmap_legacy_base(void) { if (mmap_is_ia32()) return TASK_UNMAPPED_BASE; diff -puN include/linux/sched.h~x86-get_unmapped_area-use-proper-mmap-base-for-bottom-up-direction include/linux/sched.h --- a/include/linux/sched.h~x86-get_unmapped_area-use-proper-mmap-base-for-bottom-up-direction +++ a/include/linux/sched.h @@ -306,6 +306,7 @@ struct nsproxy; struct user_namespace; #ifdef CONFIG_MMU +extern unsigned long mmap_legacy_base(void); extern void arch_pick_mmap_layout(struct mm_struct *mm); extern unsigned long arch_get_unmapped_area(struct file *, unsigned long, unsigned long, _ Patches currently in -mm which might be from sinaelgl@xxxxxxxxx are x86-get_unmapped_area-use-proper-mmap-base-for-bottom-up-direction.patch -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html