mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-16 05:26:07 +00:00
mm/vma: move __vm_munmap() to mm/vma.c
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>
This commit is contained in:
parent
a9d1f3f2d7
commit
bef5418d1f
18
mm/mmap.c
18
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);
|
||||
|
18
mm/vma.c
18
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;
|
||||
}
|
||||
|
2
mm/vma.h
2
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 */
|
||||
|
@ -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 */
|
||||
|
Loading…
x
Reference in New Issue
Block a user