diff options
Diffstat (limited to 'arch/mips/kernel/entry.S')
| -rw-r--r-- | arch/mips/kernel/entry.S | 7 | 
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/mips/kernel/entry.S b/arch/mips/kernel/entry.S index a6c13321200..9b00362f32f 100644 --- a/arch/mips/kernel/entry.S +++ b/arch/mips/kernel/entry.S @@ -36,6 +36,11 @@ FEXPORT(ret_from_exception)  FEXPORT(ret_from_irq)  	LONG_S	s0, TI_REGS($28)  FEXPORT(__ret_from_irq) +/* + * We can be coming here from a syscall done in the kernel space, + * e.g. a failed kernel_execve(). + */ +resume_userspace_check:  	LONG_L	t0, PT_STATUS(sp)		# returning to kernel mode?  	andi	t0, t0, KU_USER  	beqz	t0, resume_kernel @@ -162,7 +167,7 @@ work_notifysig:				# deal with pending signals and  	move	a0, sp  	li	a1, 0  	jal	do_notify_resume	# a2 already loaded -	j	resume_userspace +	j	resume_userspace_check  FEXPORT(syscall_exit_partial)  	local_irq_disable		# make sure need_resched doesn't  |