• Oleg Nesterov's avatar
    ipc/shm: kill the historical/wrong mm->start_stack check · bf77b94c
    Oleg Nesterov authored
    do_shmat() is the only user of ->start_stack (proc just reports its
    value), and this check looks ugly and wrong.
    
    The reason for this check is not clear at all, and it wrongly assumes that
    the stack can only grow down.
    
    But the main problem is that in general mm->start_stack has nothing to do
    with stack_vma->vm_start.  Not only the application can switch to another
    stack and even unmap this area, setup_arg_pages() expands the stack
    without updating mm->start_stack during exec().  This means that in the
    likely case "addr > start_stack - size - PAGE_SIZE * 5" is simply
    impossible after find_vma_intersection() == F, or the stack can't grow
    anyway because of RLIMIT_STACK.
    
    Many thanks to Hugh for his explanations.
    Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
    Acked-by: default avatarHugh Dickins <hughd@google.com>
    Cc: Cyrill Gorcunov <gorcunov@gmail.com>
    Cc: Davidlohr Bueso <davidlohr.bueso@hp.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    bf77b94c
shm.c 32.1 KB