• D
    mm/mremap: for MREMAP_DONTUNMAP check security_vm_enough_memory_mm() · ad8ee77e
    Dmitry Safonov 提交于
    Currently memory is accounted post-mremap() with MREMAP_DONTUNMAP, which
    may break overcommit policy.  So, check if there's enough memory before
    doing actual VMA copy.
    
    Don't unset VM_ACCOUNT on MREMAP_DONTUNMAP.  By semantics, such mremap()
    is actually a memory allocation.  That also simplifies the error-path a
    little.
    
    Also, as it's memory allocation on success don't reset hiwater_vm value.
    
    Link: https://lkml.kernel.org/r/20201013013416.390574-3-dima@arista.com
    Fixes: commit e346b381 ("mm/mremap: add MREMAP_DONTUNMAP to mremap()")
    Signed-off-by: NDmitry Safonov <dima@arista.com>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Brian Geffon <bgeffon@google.com>
    Cc: Catalin Marinas <catalin.marinas@arm.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: "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: Will Deacon <will@kernel.org>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    ad8ee77e
mremap.c 25.4 KB