diff options
| -rw-r--r-- | arch/mips/kernel/traps.c | 2 | ||||
| -rw-r--r-- | arch/mips/mm/c-octeon.c | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index 8119ac2fdfc9..d57fc10df773 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c | |||
| @@ -712,10 +712,12 @@ int process_fpemu_return(int sig, void __user *fault_addr) | |||
| 712 | si.si_addr = fault_addr; | 712 | si.si_addr = fault_addr; |
| 713 | si.si_signo = sig; | 713 | si.si_signo = sig; |
| 714 | if (sig == SIGSEGV) { | 714 | if (sig == SIGSEGV) { |
| 715 | down_read(¤t->mm->mmap_sem); | ||
| 715 | if (find_vma(current->mm, (unsigned long)fault_addr)) | 716 | if (find_vma(current->mm, (unsigned long)fault_addr)) |
| 716 | si.si_code = SEGV_ACCERR; | 717 | si.si_code = SEGV_ACCERR; |
| 717 | else | 718 | else |
| 718 | si.si_code = SEGV_MAPERR; | 719 | si.si_code = SEGV_MAPERR; |
| 720 | up_read(¤t->mm->mmap_sem); | ||
| 719 | } else { | 721 | } else { |
| 720 | si.si_code = BUS_ADRERR; | 722 | si.si_code = BUS_ADRERR; |
| 721 | } | 723 | } |
diff --git a/arch/mips/mm/c-octeon.c b/arch/mips/mm/c-octeon.c index f41a5c5b0865..05b1d7cf9514 100644 --- a/arch/mips/mm/c-octeon.c +++ b/arch/mips/mm/c-octeon.c | |||
| @@ -137,8 +137,10 @@ static void octeon_flush_cache_sigtramp(unsigned long addr) | |||
| 137 | { | 137 | { |
| 138 | struct vm_area_struct *vma; | 138 | struct vm_area_struct *vma; |
| 139 | 139 | ||
| 140 | down_read(¤t->mm->mmap_sem); | ||
| 140 | vma = find_vma(current->mm, addr); | 141 | vma = find_vma(current->mm, addr); |
| 141 | octeon_flush_icache_all_cores(vma); | 142 | octeon_flush_icache_all_cores(vma); |
| 143 | up_read(¤t->mm->mmap_sem); | ||
| 142 | } | 144 | } |
| 143 | 145 | ||
| 144 | 146 | ||
