mm/vma: move __vm_munmap() to mm/vma.c
authorLorenzo Stoakes <lorenzo.stoakes@oracle.com>
Tue, 3 Dec 2024 18:05:12 +0000 (18:05 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Tue, 14 Jan 2025 06:40:43 +0000 (22:40 -0800)
This was arbitrarily left in mmap.c it makes no sense being there, move it
to vma.c to render it testable.

Link: https://lkml.kernel.org/r/5e5e81807c54dfbe363edb2d431eb3d7a37fcdba.1733248985.git.lorenzo.stoakes@oracle.com
Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Christian Brauner <brauner@kernel.org>
Cc: Eric W. Biederman <ebiederm@xmission.com>
Cc: Jan Kara <jack@suse.cz>
Cc: Jann Horn <jannh@google.com>
Cc: Kees Cook <kees@kernel.org>
Cc: Liam R. Howlett <Liam.Howlett@Oracle.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/mmap.c
mm/vma.c
mm/vma.h
tools/testing/vma/vma_internal.h

index cea10c8..b373486 100644 (file)
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -1044,24 +1044,6 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
        return ret;
 }
 
-static int __vm_munmap(unsigned long start, size_t len, bool unlock)
-{
-       int ret;
-       struct mm_struct *mm = current->mm;
-       LIST_HEAD(uf);
-       VMA_ITERATOR(vmi, mm, start);
-
-       if (mmap_write_lock_killable(mm))
-               return -EINTR;
-
-       ret = do_vmi_munmap(&vmi, mm, start, len, &uf, unlock);
-       if (ret || !unlock)
-               mmap_write_unlock(mm);
-
-       userfaultfd_unmap_complete(mm, &uf);
-       return ret;
-}
-
 int vm_munmap(unsigned long start, size_t len)
 {
        return __vm_munmap(start, len, false);
index e270efc..06554a7 100644 (file)
--- a/mm/vma.c
+++ b/mm/vma.c
@@ -2877,3 +2877,21 @@ int expand_downwards(struct vm_area_struct *vma, unsigned long address)
        validate_mm(mm);
        return error;
 }
+
+int __vm_munmap(unsigned long start, size_t len, bool unlock)
+{
+       int ret;
+       struct mm_struct *mm = current->mm;
+       LIST_HEAD(uf);
+       VMA_ITERATOR(vmi, mm, start);
+
+       if (mmap_write_lock_killable(mm))
+               return -EINTR;
+
+       ret = do_vmi_munmap(&vmi, mm, start, len, &uf, unlock);
+       if (ret || !unlock)
+               mmap_write_unlock(mm);
+
+       userfaultfd_unmap_complete(mm, &uf);
+       return ret;
+}
index 6c460a1..295d44e 100644 (file)
--- a/mm/vma.h
+++ b/mm/vma.h
@@ -478,4 +478,6 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address);
 
 int expand_downwards(struct vm_area_struct *vma, unsigned long address);
 
+int __vm_munmap(unsigned long start, size_t len, bool unlock);
+
 #endif /* __MM_VMA_H */
index fab3f3b..a7de59a 100644 (file)
@@ -906,6 +906,11 @@ static inline void mmap_write_unlock(struct mm_struct *)
 {
 }
 
+static inline int mmap_write_lock_killable(struct mm_struct *)
+{
+       return 0;
+}
+
 static inline bool can_modify_mm(struct mm_struct *mm,
                                 unsigned long start,
                                 unsigned long end)
@@ -1175,5 +1180,9 @@ static inline int anon_vma_prepare(struct vm_area_struct *vma)
        return __anon_vma_prepare(vma);
 }
 
+static inline void userfaultfd_unmap_complete(struct mm_struct *mm,
+                                             struct list_head *uf)
+{
+}
 
 #endif /* __MM_VMA_INTERNAL_H */