• Dmitry Safonov's avatar
    mm/mremap: don't account pages in vma_to_resize() · fdbef614
    Dmitry Safonov authored
    All this vm_unacct_memory(charged) dance seems to complicate the life
    without a good reason.  Furthermore, it seems not always done right on
    error-pathes in mremap_to().  And worse than that: this `charged'
    difference is sometimes double-accounted for growing MREMAP_DONTUNMAP
    mremap()s in move_vma():
    
    	if (security_vm_enough_memory_mm(mm, new_len >> PAGE_SHIFT))
    
    Let's not do this.  Account memory in mremap() fast-path for growing
    VMAs or in move_vma() for actually moving things.  The same simpler way
    as it's done by vm_stat_account(), but with a difference to call
    security_vm_enough_memory_mm() before copying/adjusting VMA.
    
    Originally noticed by Chen Wandun:
    https://lkml.kernel.org/r/20210717101942.120607-1-chenwandun@huawei.com
    
    Link: https://lkml.kernel.org/r/20210721131320.522061-1-dima@arista.com
    Fixes: e346b381 ("mm/mremap: add MREMAP_DONTUNMAP to mremap()")
    Signed-off-by: default avatarDmitry Safonov <dima@arista.com>
    Acked-by: default avatarBrian Geffon <bgeffon@google.com>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Chen Wandun <chenwandun@huawei.com>
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Dave Jiang <dave.jiang@intel.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jason Gunthorpe <jgg@ziepe.ca>
    Cc: John Hubbard <jhubbard@nvidia.com>
    Cc: Kefeng Wang <wangkefeng.wang@huawei.com>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Ralph Campbell <rcampbell@nvidia.com>
    Cc: Russell King <linux@armlinux.org.uk>
    Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vishal Verma <vishal.l.verma@intel.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Wei Yongjun <weiyongjun1@huawei.com>
    Cc: Will Deacon <will@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    fdbef614
mremap.c 27.6 KB