• Oleg Nesterov's avatar
    mm: fix the racy mm->locked_vm change in · 87e8827b
    Oleg Nesterov authored
    "mm->locked_vm += grow" and vm_stat_account() in acct_stack_growth() are
    not safe; multiple threads using the same ->mm can do this at the same
    time trying to expans different vma's under down_read(mmap_sem).  This
    means that one of the "locked_vm += grow" changes can be lost and we can
    miss munlock_vma_pages_all() later.
    
    Move this code into the caller(s) under mm->page_table_lock.  All other
    updates to ->locked_vm hold mmap_sem for writing.
    Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
    Acked-by: default avatarHugh Dickins <hughd@google.com>
    Cc: Andrey Konovalov <andreyknvl@google.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: "Kirill A. Shutemov" <kirill@shutemov.name>
    Cc: Sasha Levin <sasha.levin@oracle.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    87e8827b
mmap.c 90.2 KB