On Fri, Sep 30, 2022 at 12:38:43AM +0000, Carlos Llamas wrote:
diff --git a/mm/mmap.c b/mm/mmap.c index 9d780f415be3..36c08e2c78da 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -1797,7 +1797,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr, if (!arch_validate_flags(vma->vm_flags)) { error = -EINVAL; if (file)
goto unmap_and_free_vma;
else goto free_vma; }goto close_and_free_vma;
@@ -1844,6 +1844,9 @@ unsigned long mmap_region(struct file *file, unsigned long addr, return addr; +close_and_free_vma:
- if (vma->vm_ops && vma->vm_ops->close)
vma->vm_ops->close(vma);
unmap_and_free_vma: fput(vma->vm_file); vma->vm_file = NULL;
The fix looks right to me but I'm not an mm expert. FWIW:
Reviewed-by: Catalin Marinas catalin.marinas@arm.com