ipc/shm: use the vma iterator for munmap calls
authorLiam R. Howlett <Liam.Howlett@Oracle.com>
Fri, 20 Jan 2023 16:26:16 +0000 (11:26 -0500)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 10 Feb 2023 00:51:32 +0000 (16:51 -0800)
Pass through the vma iterator to do_vmi_munmap() to handle the iterator
state internally

Link: https://lkml.kernel.org/r/20230120162650.984577-16-Liam.Howlett@oracle.com
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
ipc/shm.c

index bd2fcc4..1c6a6b3 100644 (file)
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -1786,8 +1786,8 @@ long ksys_shmdt(char __user *shmaddr)
                         */
                        file = vma->vm_file;
                        size = i_size_read(file_inode(vma->vm_file));
-                       do_munmap(mm, vma->vm_start, vma->vm_end - vma->vm_start, NULL);
-                       mas_pause(&vmi.mas);
+                       do_vmi_munmap(&vmi, mm, vma->vm_start,
+                             vma->vm_end - vma->vm_start, NULL, false);
                        /*
                         * We discovered the size of the shm segment, so
                         * break out of here and fall through to the next
@@ -1810,10 +1810,9 @@ long ksys_shmdt(char __user *shmaddr)
                /* finding a matching vma now does not alter retval */
                if ((vma->vm_ops == &shm_vm_ops) &&
                    ((vma->vm_start - addr)/PAGE_SIZE == vma->vm_pgoff) &&
-                   (vma->vm_file == file)) {
-                       do_munmap(mm, vma->vm_start, vma->vm_end - vma->vm_start, NULL);
-                       mas_pause(&vmi.mas);
-               }
+                   (vma->vm_file == file))
+                       do_vmi_munmap(&vmi, mm, vma->vm_start,
+                             vma->vm_end - vma->vm_start, NULL, false);
 
                vma = vma_next(&vmi);
        }