aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mm/fault.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mm/fault.c')
-rw-r--r--arch/arm/mm/fault.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
index ec83c8fca62d..0e417233dad7 100644
--- a/arch/arm/mm/fault.c
+++ b/arch/arm/mm/fault.c
@@ -154,10 +154,11 @@ __do_kernel_fault(struct mm_struct *mm, unsigned long addr, unsigned int fsr,
154 * User mode accesses just cause a SIGSEGV 154 * User mode accesses just cause a SIGSEGV
155 */ 155 */
156static void 156static void
157__do_user_fault(struct task_struct *tsk, unsigned long addr, 157__do_user_fault(unsigned long addr, unsigned int fsr, unsigned int sig,
158 unsigned int fsr, unsigned int sig, int code, 158 int code, struct pt_regs *regs)
159 struct pt_regs *regs)
160{ 159{
160 struct task_struct *tsk = current;
161
161 if (addr > TASK_SIZE) 162 if (addr > TASK_SIZE)
162 harden_branch_predictor(); 163 harden_branch_predictor();
163 164
@@ -181,7 +182,7 @@ __do_user_fault(struct task_struct *tsk, unsigned long addr,
181 tsk->thread.address = addr; 182 tsk->thread.address = addr;
182 tsk->thread.error_code = fsr; 183 tsk->thread.error_code = fsr;
183 tsk->thread.trap_no = 14; 184 tsk->thread.trap_no = 14;
184 force_sig_fault(sig, code, (void __user *)addr, tsk); 185 force_sig_fault(sig, code, (void __user *)addr);
185} 186}
186 187
187void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs) 188void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
@@ -194,7 +195,7 @@ void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
194 * have no context to handle this fault with. 195 * have no context to handle this fault with.
195 */ 196 */
196 if (user_mode(regs)) 197 if (user_mode(regs))
197 __do_user_fault(tsk, addr, fsr, SIGSEGV, SEGV_MAPERR, regs); 198 __do_user_fault(addr, fsr, SIGSEGV, SEGV_MAPERR, regs);
198 else 199 else
199 __do_kernel_fault(mm, addr, fsr, regs); 200 __do_kernel_fault(mm, addr, fsr, regs);
200} 201}
@@ -390,7 +391,7 @@ retry:
390 SEGV_ACCERR : SEGV_MAPERR; 391 SEGV_ACCERR : SEGV_MAPERR;
391 } 392 }
392 393
393 __do_user_fault(tsk, addr, fsr, sig, code, regs); 394 __do_user_fault(addr, fsr, sig, code, regs);
394 return 0; 395 return 0;
395 396
396no_context: 397no_context: