diff options
| -rw-r--r-- | arch/arm/kernel/swp_emulate.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/arm/kernel/swp_emulate.c b/arch/arm/kernel/swp_emulate.c index df745188f5d..ab1017bd166 100644 --- a/arch/arm/kernel/swp_emulate.c +++ b/arch/arm/kernel/swp_emulate.c | |||
| @@ -109,10 +109,12 @@ static void set_segfault(struct pt_regs *regs, unsigned long addr) | |||
| 109 | { | 109 | { |
| 110 | siginfo_t info; | 110 | siginfo_t info; |
| 111 | 111 | ||
| 112 | down_read(¤t->mm->mmap_sem); | ||
| 112 | if (find_vma(current->mm, addr) == NULL) | 113 | if (find_vma(current->mm, addr) == NULL) |
| 113 | info.si_code = SEGV_MAPERR; | 114 | info.si_code = SEGV_MAPERR; |
| 114 | else | 115 | else |
| 115 | info.si_code = SEGV_ACCERR; | 116 | info.si_code = SEGV_ACCERR; |
| 117 | up_read(¤t->mm->mmap_sem); | ||
| 116 | 118 | ||
| 117 | info.si_signo = SIGSEGV; | 119 | info.si_signo = SIGSEGV; |
| 118 | info.si_errno = 0; | 120 | info.si_errno = 0; |
