mmap locking API: use coccinelle to convert mmap_sem rwsem call sites
[linux-block.git] / mm / madvise.c
index 8cbd8c1bfe159e1c8df447660f5c6edfa1366d6d..d9b0f66b43961b3fbb6413faf245934db62016fb 100644 (file)
@@ -289,12 +289,12 @@ static long madvise_willneed(struct vm_area_struct *vma,
         */
        *prev = NULL;   /* tell sys_madvise we drop mmap_sem */
        get_file(file);
-       up_read(&current->mm->mmap_sem);
+       mmap_read_unlock(current->mm);
        offset = (loff_t)(start - vma->vm_start)
                        + ((loff_t)vma->vm_pgoff << PAGE_SHIFT);
        vfs_fadvise(file, offset, end - start, POSIX_FADV_WILLNEED);
        fput(file);
-       down_read(&current->mm->mmap_sem);
+       mmap_read_lock(current->mm);
        return 0;
 }
 
@@ -770,7 +770,7 @@ static long madvise_dontneed_free(struct vm_area_struct *vma,
        if (!userfaultfd_remove(vma, start, end)) {
                *prev = NULL; /* mmap_sem has been dropped, prev is stale */
 
-               down_read(&current->mm->mmap_sem);
+               mmap_read_lock(current->mm);
                vma = find_vma(current->mm, start);
                if (!vma)
                        return -ENOMEM;
@@ -852,13 +852,13 @@ static long madvise_remove(struct vm_area_struct *vma,
        get_file(f);
        if (userfaultfd_remove(vma, start, end)) {
                /* mmap_sem was not released by userfaultfd_remove() */
-               up_read(&current->mm->mmap_sem);
+               mmap_read_unlock(current->mm);
        }
        error = vfs_fallocate(f,
                                FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE,
                                offset, end - start);
        fput(f);
-       down_read(&current->mm->mmap_sem);
+       mmap_read_lock(current->mm);
        return error;
 }
 
@@ -1089,7 +1089,7 @@ int do_madvise(unsigned long start, size_t len_in, int behavior)
 
        write = madvise_need_mmap_write(behavior);
        if (write) {
-               if (down_write_killable(&current->mm->mmap_sem))
+               if (mmap_write_lock_killable(current->mm))
                        return -EINTR;
 
                /*
@@ -1105,11 +1105,11 @@ int do_madvise(unsigned long start, size_t len_in, int behavior)
                 * model.
                 */
                if (!mmget_still_valid(current->mm)) {
-                       up_write(&current->mm->mmap_sem);
+                       mmap_write_unlock(current->mm);
                        return -EINTR;
                }
        } else {
-               down_read(&current->mm->mmap_sem);
+               mmap_read_lock(current->mm);
        }
 
        /*
@@ -1159,9 +1159,9 @@ int do_madvise(unsigned long start, size_t len_in, int behavior)
 out:
        blk_finish_plug(&plug);
        if (write)
-               up_write(&current->mm->mmap_sem);
+               mmap_write_unlock(current->mm);
        else
-               up_read(&current->mm->mmap_sem);
+               mmap_read_unlock(current->mm);
 
        return error;
 }