The patch titled Subject: mm-add-mremap_dontunmap-to-mremap-v6 has been added to the -mm tree. Its filename is mm-add-mremap_dontunmap-to-mremap-v6.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/mm-add-mremap_dontunmap-to-mremap-v6.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/mm-add-mremap_dontunmap-to-mremap-v6.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Brian Geffon <bgeffon@xxxxxxxxxx> Subject: mm-add-mremap_dontunmap-to-mremap-v6 - Code cleanup suggested by Kirill. - Correct commit message to more accurately reflect the behavior. - Clear VM_LOCKED and VM_LOCKEDONFAULT on the old vma. Link: http://lkml.kernel.org/r/20200218173221.237674-1-bgeffon@xxxxxxxxxx Signed-off-by: Brian Geffon <bgeffon@xxxxxxxxxx> Cc: "Michael S . Tsirkin" <mst@xxxxxxxxxx> Cc: Brian Geffon <bgeffon@xxxxxxxxxx> Cc: Arnd Bergmann <arnd@xxxxxxxx> Cc: Andy Lutomirski <luto@xxxxxxxxxxxxxx> Cc: Will Deacon <will@xxxxxxxxxx> Cc: Andrea Arcangeli <aarcange@xxxxxxxxxx> Cc: Sonny Rao <sonnyrao@xxxxxxxxxx> Cc: Minchan Kim <minchan@xxxxxxxxxx> Cc: Joel Fernandes <joel@xxxxxxxxxxxxxxxxx> Cc: Yu Zhao <yuzhao@xxxxxxxxxx> Cc: Jesse Barnes <jsbarnes@xxxxxxxxxx> Cc: Nathan Chancellor <natechancellor@xxxxxxxxx> Cc: Florian Weimer <fweimer@xxxxxxxxxx> Cc: "Kirill A . Shutemov" <kirill@xxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/mremap.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) --- a/mm/mremap.c~mm-add-mremap_dontunmap-to-mremap-v6 +++ a/mm/mremap.c @@ -426,8 +426,13 @@ static unsigned long move_vma(struct vm_ * for old_len, but we're now adding new_len - old_len locked * bytes to the new mapping. */ - if (new_len > old_len) + if (vm_flags & VM_LOCKED && new_len > old_len) { mm->locked_vm += (new_len - old_len) >> PAGE_SHIFT; + *locked = true; + } + + /* We always clear VM_LOCKED[ONFAULT] on the old vma */ + vma->vm_flags &= VM_LOCKED_CLEAR_MASK; goto out; } @@ -687,7 +692,7 @@ SYSCALL_DEFINE5(mremap, unsigned long, a if (down_write_killable(¤t->mm->mmap_sem)) return -EINTR; - if (flags & MREMAP_FIXED || flags & MREMAP_DONTUNMAP) { + if (flags & (MREMAP_FIXED | MREMAP_DONTUNMAP)) { ret = mremap_to(addr, old_len, new_addr, new_len, &locked, flags, &uf, &uf_unmap_early, &uf_unmap); _ Patches currently in -mm which might be from bgeffon@xxxxxxxxxx are mm-add-mremap_dontunmap-to-mremap.patch mm-add-mremap_dontunmap-to-mremap-v6.patch selftest-add-mremap_dontunmap-selftest.patch