CC stable for v2.6.38
On Tue, Apr 12, 2011 at 01:42, <[email protected]> wrote:
>
> The patch titled
> brk: COMPAT_BRK: fix detection of randomized brk
> has been added to the -mm tree. Its filename is
> brk-compat_brk-fix-detection-of-randomized-brk.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 ***
>
> See http://userweb.kernel.org/~akpm/stuff/added-to-mm.txt to find
> out what to do about this
>
> The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/
>
> ------------------------------------------------------
> Subject: brk: COMPAT_BRK: fix detection of randomized brk
> From: Jiri Kosina <[email protected]>
>
> 5520e89 ("brk: fix min_brk lower bound computation for COMPAT_BRK") tried
> to get the whole logic of brk randomization for legacy (libc5-based)
> applications finally right.
>
> It turns out that the way to detect whether brk has actually been
> randomized in the end or not introduced by that patch still doesn't work
> for those binaries, as reported by Geert.
>
> I don't like it, but currently see no better option than a bit flag in
> task_struct to catch the CONFIG_COMPAT_BRK && randomize_va_space == 2
> case.
>
> Signed-off-by: Jiri Kosina <[email protected]>
> Tested-by: Geert Uytterhoeven <[email protected]>
> Signed-off-by: Andrew Morton <[email protected]>
> ---
>
> fs/binfmt_elf.c | 6 +++++-
> include/linux/sched.h | 3 +++
> mm/mmap.c | 2 +-
> 3 files changed, 9 insertions(+), 2 deletions(-)
>
> diff -puN fs/binfmt_elf.c~brk-compat_brk-fix-detection-of-randomized-brk
> fs/binfmt_elf.c
> --- a/fs/binfmt_elf.c~brk-compat_brk-fix-detection-of-randomized-brk
> +++ a/fs/binfmt_elf.c
> @@ -941,9 +941,13 @@ static int load_elf_binary(struct linux_
> current->mm->start_stack = bprm->p;
>
> #ifdef arch_randomize_brk
> - if ((current->flags & PF_RANDOMIZE) && (randomize_va_space > 1))
> + if ((current->flags & PF_RANDOMIZE) && (randomize_va_space > 1)) {
> current->mm->brk = current->mm->start_brk =
> arch_randomize_brk(current->mm);
> +#ifdef CONFIG_COMPAT_BRK
> + current->brk_randomized = 1;
> +#endif
> + }
> #endif
>
> if (current->personality & MMAP_PAGE_ZERO) {
> diff -puN
> include/linux/sched.h~brk-compat_brk-fix-detection-of-randomized-brk
> include/linux/sched.h
> --- a/include/linux/sched.h~brk-compat_brk-fix-detection-of-randomized-brk
> +++ a/include/linux/sched.h
> @@ -1253,6 +1253,9 @@ struct task_struct {
> #endif
>
> struct mm_struct *mm, *active_mm;
> +#ifdef CONFIG_COMPAT_BRK
> + unsigned brk_randomized:1;
> +#endif
> #if defined(SPLIT_RSS_COUNTING)
> struct task_rss_stat rss_stat;
> #endif
> diff -puN mm/mmap.c~brk-compat_brk-fix-detection-of-randomized-brk mm/mmap.c
> --- a/mm/mmap.c~brk-compat_brk-fix-detection-of-randomized-brk
> +++ a/mm/mmap.c
> @@ -263,7 +263,7 @@ SYSCALL_DEFINE1(brk, unsigned long, brk)
> * randomize_va_space to 2, which will still cause mm->start_brk
> * to be arbitrarily shifted
> */
> - if (mm->start_brk > PAGE_ALIGN(mm->end_data))
> + if (current->brk_randomized)
> min_brk = mm->start_brk;
> else
> min_brk = mm->end_data;
> _
>
> Patches currently in -mm which might be from [email protected] are
>
> origin.patch
> linux-next.patch
> brk-compat_brk-fix-detection-of-randomized-brk.patch
> jbd-remove-dependency-on-__gfp_nofail.patch
>
>
--
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
_______________________________________________
stable mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/stable