lkml.org 
[lkml]   [2016]   [Feb]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 06/18] mm: make vm_brk killable
    Date
    From: Michal Hocko <mhocko@suse.com>

    Now that all the callers handle vm_brk failure we can change it
    wait for mmap_sem killable to help oom_reaper to not get blocked
    just because vm_brk gets blocked behind mmap_sem readers.

    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Signed-off-by: Michal Hocko <mhocko@suse.com>
    ---
    include/linux/mm.h | 2 +-
    mm/mmap.c | 9 +++------
    2 files changed, 4 insertions(+), 7 deletions(-)

    diff --git a/include/linux/mm.h b/include/linux/mm.h
    index 4ee6a3561540..dccaea8682f2 100644
    --- a/include/linux/mm.h
    +++ b/include/linux/mm.h
    @@ -2077,7 +2077,7 @@ static inline void mm_populate(unsigned long addr, unsigned long len) {}
    #endif

    /* These take the mm semaphore themselves */
    -extern unsigned long vm_brk(unsigned long, unsigned long);
    +extern unsigned long __must_check vm_brk(unsigned long, unsigned long);
    extern int vm_munmap(unsigned long, size_t);
    extern unsigned long __must_check vm_mmap(struct file *, unsigned long,
    unsigned long, unsigned long,
    diff --git a/mm/mmap.c b/mm/mmap.c
    index 5d33c841e3a2..3f264fb14118 100644
    --- a/mm/mmap.c
    +++ b/mm/mmap.c
    @@ -2718,12 +2718,9 @@ unsigned long vm_brk(unsigned long addr, unsigned long len)
    unsigned long ret;
    bool populate;

    - /*
    - * XXX not all users are chcecking the return value, convert
    - * to down_write_killable after they are able to cope with
    - * error
    - */
    - down_write(&mm->mmap_sem);
    + if (down_write_killable(&mm->mmap_sem))
    + return -EINTR;
    +
    ret = do_brk(addr, len);
    populate = ((mm->def_flags & VM_LOCKED) != 0);
    up_write(&mm->mmap_sem);
    --
    2.7.0
    \
     
     \ /
      Last update: 2016-02-29 15:21    [W:5.815 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site