]> git.proxmox.com Git - mirror_ubuntu-kernels.git/blobdiff - arch/riscv/mm/fault.c
mmap locking API: use coccinelle to convert mmap_sem rwsem call sites
[mirror_ubuntu-kernels.git] / arch / riscv / mm / fault.c
index be84e32adc4c4e75e2feedd53a2993882acdeb2e..cd7f4af95e56e6ead8625322d898588ddebd5f9e 100644 (file)
@@ -69,7 +69,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs)
        perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, addr);
 
 retry:
-       down_read(&mm->mmap_sem);
+       mmap_read_lock(mm);
        vma = find_vma(mm, addr);
        if (unlikely(!vma))
                goto bad_area;
@@ -155,7 +155,7 @@ good_area:
                }
        }
 
-       up_read(&mm->mmap_sem);
+       mmap_read_unlock(mm);
        return;
 
        /*
@@ -163,7 +163,7 @@ good_area:
         * Fix it, but check if it's kernel or user first.
         */
 bad_area:
-       up_read(&mm->mmap_sem);
+       mmap_read_unlock(mm);
        /* User mode accesses just cause a SIGSEGV */
        if (user_mode(regs)) {
                do_trap(regs, SIGSEGV, code, addr);
@@ -191,14 +191,14 @@ no_context:
         * (which will retry the fault, or kill us if we got oom-killed).
         */
 out_of_memory:
-       up_read(&mm->mmap_sem);
+       mmap_read_unlock(mm);
        if (!user_mode(regs))
                goto no_context;
        pagefault_out_of_memory();
        return;
 
 do_sigbus:
-       up_read(&mm->mmap_sem);
+       mmap_read_unlock(mm);
        /* Kernel mode? Handle exceptions or die */
        if (!user_mode(regs))
                goto no_context;