]> git.proxmox.com Git - mirror_ubuntu-kernels.git/blobdiff - fs/proc/task_mmu.c
mmap locking API: use coccinelle to convert mmap_sem rwsem call sites
[mirror_ubuntu-kernels.git] / fs / proc / task_mmu.c
index 6ad407d5efe2ff4bc8f854a682824232f74a007d..81b985476c1da91754f33f9d0ccd211038afcc0f 100644 (file)
@@ -145,7 +145,7 @@ static void *m_start(struct seq_file *m, loff_t *ppos)
                return NULL;
        }
 
-       if (down_read_killable(&mm->mmap_sem)) {
+       if (mmap_read_lock_killable(mm)) {
                mmput(mm);
                put_task_struct(priv->task);
                priv->task = NULL;
@@ -188,7 +188,7 @@ static void m_stop(struct seq_file *m, void *v)
                return;
 
        release_task_mempolicy(priv);
-       up_read(&mm->mmap_sem);
+       mmap_read_unlock(mm);
        mmput(mm);
        put_task_struct(priv->task);
        priv->task = NULL;
@@ -847,7 +847,7 @@ static int show_smaps_rollup(struct seq_file *m, void *v)
 
        memset(&mss, 0, sizeof(mss));
 
-       ret = down_read_killable(&mm->mmap_sem);
+       ret = mmap_read_lock_killable(mm);
        if (ret)
                goto out_put_mm;
 
@@ -866,7 +866,7 @@ static int show_smaps_rollup(struct seq_file *m, void *v)
        __show_smap(m, &mss, true);
 
        release_task_mempolicy(priv);
-       up_read(&mm->mmap_sem);
+       mmap_read_unlock(mm);
 
 out_put_mm:
        mmput(mm);
@@ -1140,7 +1140,7 @@ static ssize_t clear_refs_write(struct file *file, const char __user *buf,
                };
 
                if (type == CLEAR_REFS_MM_HIWATER_RSS) {
-                       if (down_write_killable(&mm->mmap_sem)) {
+                       if (mmap_write_lock_killable(mm)) {
                                count = -EINTR;
                                goto out_mm;
                        }
@@ -1150,11 +1150,11 @@ static ssize_t clear_refs_write(struct file *file, const char __user *buf,
                         * resident set size to this mm's current rss value.
                         */
                        reset_mm_hiwater_rss(mm);
-                       up_write(&mm->mmap_sem);
+                       mmap_write_unlock(mm);
                        goto out_mm;
                }
 
-               if (down_read_killable(&mm->mmap_sem)) {
+               if (mmap_read_lock_killable(mm)) {
                        count = -EINTR;
                        goto out_mm;
                }
@@ -1163,8 +1163,8 @@ static ssize_t clear_refs_write(struct file *file, const char __user *buf,
                        for (vma = mm->mmap; vma; vma = vma->vm_next) {
                                if (!(vma->vm_flags & VM_SOFTDIRTY))
                                        continue;
-                               up_read(&mm->mmap_sem);
-                               if (down_write_killable(&mm->mmap_sem)) {
+                               mmap_read_unlock(mm);
+                               if (mmap_write_lock_killable(mm)) {
                                        count = -EINTR;
                                        goto out_mm;
                                }
@@ -1183,14 +1183,14 @@ static ssize_t clear_refs_write(struct file *file, const char __user *buf,
                                         * failed like if
                                         * get_proc_task() fails?
                                         */
-                                       up_write(&mm->mmap_sem);
+                                       mmap_write_unlock(mm);
                                        goto out_mm;
                                }
                                for (vma = mm->mmap; vma; vma = vma->vm_next) {
                                        vma->vm_flags &= ~VM_SOFTDIRTY;
                                        vma_set_page_prot(vma);
                                }
-                               downgrade_write(&mm->mmap_sem);
+                               mmap_write_downgrade(mm);
                                break;
                        }
 
@@ -1203,7 +1203,7 @@ static ssize_t clear_refs_write(struct file *file, const char __user *buf,
                if (type == CLEAR_REFS_SOFT_DIRTY)
                        mmu_notifier_invalidate_range_end(&range);
                tlb_finish_mmu(&tlb, 0, -1);
-               up_read(&mm->mmap_sem);
+               mmap_read_unlock(mm);
 out_mm:
                mmput(mm);
        }
@@ -1564,11 +1564,11 @@ static ssize_t pagemap_read(struct file *file, char __user *buf,
                /* overflow ? */
                if (end < start_vaddr || end > end_vaddr)
                        end = end_vaddr;
-               ret = down_read_killable(&mm->mmap_sem);
+               ret = mmap_read_lock_killable(mm);
                if (ret)
                        goto out_free;
                ret = walk_page_range(mm, start_vaddr, end, &pagemap_ops, &pm);
-               up_read(&mm->mmap_sem);
+               mmap_read_unlock(mm);
                start_vaddr = end;
 
                len = min(count, PM_ENTRY_BYTES * pm.pos);