projects
/
linux-block.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mmap locking API: use coccinelle to convert mmap_sem rwsem call sites
[linux-block.git]
/
arch
/
sparc
/
mm
/
fault_32.c
diff --git
a/arch/sparc/mm/fault_32.c
b/arch/sparc/mm/fault_32.c
index 9489513888eb050e30108be7b183c3acb8ec2705..34588c4ab9d9438178a43e2930f9f319c99cf56c 100644
(file)
--- a/
arch/sparc/mm/fault_32.c
+++ b/
arch/sparc/mm/fault_32.c
@@
-195,7
+195,7
@@
asmlinkage void do_sparc_fault(struct pt_regs *regs, int text_fault, int write,
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
retry:
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
retry:
-
down_read(&mm->mmap_se
m);
+
mmap_read_lock(m
m);
if (!from_user && address >= PAGE_OFFSET)
goto bad_area;
if (!from_user && address >= PAGE_OFFSET)
goto bad_area;
@@
-271,7
+271,7
@@
good_area:
}
}
}
}
-
up_read(&mm->mmap_se
m);
+
mmap_read_unlock(m
m);
return;
/*
return;
/*
@@
-279,7
+279,7
@@
good_area:
* Fix it, but check if it's kernel or user first..
*/
bad_area:
* Fix it, but check if it's kernel or user first..
*/
bad_area:
-
up_read(&mm->mmap_se
m);
+
mmap_read_unlock(m
m);
bad_area_nosemaphore:
/* User mode accesses just cause a SIGSEGV */
bad_area_nosemaphore:
/* User mode accesses just cause a SIGSEGV */
@@
-328,7
+328,7
@@
no_context:
* us unable to handle the page fault gracefully.
*/
out_of_memory:
* us unable to handle the page fault gracefully.
*/
out_of_memory:
-
up_read(&mm->mmap_se
m);
+
mmap_read_unlock(m
m);
if (from_user) {
pagefault_out_of_memory();
return;
if (from_user) {
pagefault_out_of_memory();
return;
@@
-336,7
+336,7
@@
out_of_memory:
goto no_context;
do_sigbus:
goto no_context;
do_sigbus:
-
up_read(&mm->mmap_se
m);
+
mmap_read_unlock(m
m);
do_fault_siginfo(BUS_ADRERR, SIGBUS, regs, text_fault);
if (!from_user)
goto no_context;
do_fault_siginfo(BUS_ADRERR, SIGBUS, regs, text_fault);
if (!from_user)
goto no_context;
@@
-390,7
+390,7
@@
static void force_user_fault(unsigned long address, int write)
code = SEGV_MAPERR;
code = SEGV_MAPERR;
-
down_read(&mm->mmap_se
m);
+
mmap_read_lock(m
m);
vma = find_vma(mm, address);
if (!vma)
goto bad_area;
vma = find_vma(mm, address);
if (!vma)
goto bad_area;
@@
-415,15
+415,15
@@
good_area:
case VM_FAULT_OOM:
goto do_sigbus;
}
case VM_FAULT_OOM:
goto do_sigbus;
}
-
up_read(&mm->mmap_se
m);
+
mmap_read_unlock(m
m);
return;
bad_area:
return;
bad_area:
-
up_read(&mm->mmap_se
m);
+
mmap_read_unlock(m
m);
__do_fault_siginfo(code, SIGSEGV, tsk->thread.kregs, address);
return;
do_sigbus:
__do_fault_siginfo(code, SIGSEGV, tsk->thread.kregs, address);
return;
do_sigbus:
-
up_read(&mm->mmap_se
m);
+
mmap_read_unlock(m
m);
__do_fault_siginfo(BUS_ADRERR, SIGBUS, tsk->thread.kregs, address);
}
__do_fault_siginfo(BUS_ADRERR, SIGBUS, tsk->thread.kregs, address);
}