lkml.org 
[lkml]   [2019]   [Oct]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.3 124/166] arm64: consider stack randomization for mmap base only when necessary
    Date
    From: Alexandre Ghiti <alex@ghiti.fr>

    [ Upstream commit e8d54b62c55ab6201de6d195fc2c276294c1f6ae ]

    Do not offset mmap base address because of stack randomization if current
    task does not want randomization. Note that x86 already implements this
    behaviour.

    Link: http://lkml.kernel.org/r/20190730055113.23635-4-alex@ghiti.fr
    Signed-off-by: Alexandre Ghiti <alex@ghiti.fr>
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Acked-by: Kees Cook <keescook@chromium.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Luis Chamberlain <mcgrof@kernel.org>
    Cc: Albert Ou <aou@eecs.berkeley.edu>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Christoph Hellwig <hch@infradead.org>
    Cc: James Hogan <jhogan@kernel.org>
    Cc: Palmer Dabbelt <palmer@sifive.com>
    Cc: Paul Burton <paul.burton@mips.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Russell King <linux@armlinux.org.uk>
    Cc: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/arm64/mm/mmap.c | 6 +++++-
    1 file changed, 5 insertions(+), 1 deletion(-)

    diff --git a/arch/arm64/mm/mmap.c b/arch/arm64/mm/mmap.c
    index b050641b51392..8dac7110f0cb5 100644
    --- a/arch/arm64/mm/mmap.c
    +++ b/arch/arm64/mm/mmap.c
    @@ -54,7 +54,11 @@ unsigned long arch_mmap_rnd(void)
    static unsigned long mmap_base(unsigned long rnd, struct rlimit *rlim_stack)
    {
    unsigned long gap = rlim_stack->rlim_cur;
    - unsigned long pad = (STACK_RND_MASK << PAGE_SHIFT) + stack_guard_gap;
    + unsigned long pad = stack_guard_gap;
    +
    + /* Account for stack randomization if necessary */
    + if (current->flags & PF_RANDOMIZE)
    + pad += (STACK_RND_MASK << PAGE_SHIFT);

    /* Values close to RLIM_INFINITY can overflow. */
    if (gap + pad > gap)
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-10-06 19:48    [W:2.031 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site