diff options
Diffstat (limited to 'arch/mips/mm/fault.c')
| -rw-r--r-- | arch/mips/mm/fault.c | 18 | 
1 files changed, 5 insertions, 13 deletions
diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c index 4f8f5bf46977..5f71f2b903b7 100644 --- a/arch/mips/mm/fault.c +++ b/arch/mips/mm/fault.c @@ -42,7 +42,7 @@ static void __kprobes __do_page_fault(struct pt_regs *regs, unsigned long write,  	struct task_struct *tsk = current;  	struct mm_struct *mm = tsk->mm;  	const int field = sizeof(unsigned long) * 2; -	siginfo_t info; +	int si_code;  	int fault;  	unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; @@ -63,7 +63,7 @@ static void __kprobes __do_page_fault(struct pt_regs *regs, unsigned long write,  		return;  #endif -	info.si_code = SEGV_MAPERR; +	si_code = SEGV_MAPERR;  	/*  	 * We fault-in kernel-space virtual memory on-demand. The @@ -112,7 +112,7 @@ retry:   * we can handle it..   */  good_area: -	info.si_code = SEGV_ACCERR; +	si_code = SEGV_ACCERR;  	if (write) {  		if (!(vma->vm_flags & VM_WRITE)) @@ -223,11 +223,7 @@ bad_area_nosemaphore:  			pr_cont("\n");  		}  		current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f; -		info.si_signo = SIGSEGV; -		info.si_errno = 0; -		/* info.si_code has been set above */ -		info.si_addr = (void __user *) address; -		force_sig_info(SIGSEGV, &info, tsk); +		force_sig_fault(SIGSEGV, si_code, (void __user *)address, tsk);  		return;  	} @@ -283,11 +279,7 @@ do_sigbus:  #endif  	current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f;  	tsk->thread.cp0_badvaddr = address; -	info.si_signo = SIGBUS; -	info.si_errno = 0; -	info.si_code = BUS_ADRERR; -	info.si_addr = (void __user *) address; -	force_sig_info(SIGBUS, &info, tsk); +	force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, tsk);  	return;  #ifndef CONFIG_64BIT  |