diff options
Diffstat (limited to 'arch/arm/mm')
| -rw-r--r-- | arch/arm/mm/alignment.c | 2 | ||||
| -rw-r--r-- | arch/arm/mm/fault.c | 13 |
2 files changed, 8 insertions, 7 deletions
diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c index 6067fa4de22b..8cdb78642e93 100644 --- a/arch/arm/mm/alignment.c +++ b/arch/arm/mm/alignment.c | |||
| @@ -945,7 +945,7 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | |||
| 945 | goto fixup; | 945 | goto fixup; |
| 946 | 946 | ||
| 947 | if (ai_usermode & UM_SIGNAL) { | 947 | if (ai_usermode & UM_SIGNAL) { |
| 948 | force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)addr, current); | 948 | force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)addr); |
| 949 | } else { | 949 | } else { |
| 950 | /* | 950 | /* |
| 951 | * We're about to disable the alignment trap and return to | 951 | * We're about to disable the alignment trap and return to |
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 | */ |
| 156 | static void | 156 | static 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 | ||
| 187 | void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | 188 | void 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 | ||
| 396 | no_context: | 397 | no_context: |
