MIPS: Add syscall detection for restartable sequences
Syscalls are not allowed inside restartable sequences, so add a call to rseq_syscall() at the very beginning of the system call exit path when CONFIG_DEBUG_RSEQ=y. This will help us to detect whether there is a syscall issued erroneously inside a restartable sequence. Signed-off-by: Paul Burton <paul.burton@mips.com> Reviewed-by: James Hogan <jhogan@kernel.org> Patchwork: https://patchwork.linux-mips.org/patch/19522/ Cc: Ralf Baechle <ralf@linux-mips.org> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Cc: Boqun Feng <boqun.feng@gmail.com> Cc: linux-mips@linux-mips.org Cc: linux-kernel@vger.kernel.org
This commit is contained in:
parent
9ea141ad54
commit
9bcf53598d
|
@ -79,6 +79,10 @@ FEXPORT(ret_from_fork)
|
|||
jal schedule_tail # a0 = struct task_struct *prev
|
||||
|
||||
FEXPORT(syscall_exit)
|
||||
#ifdef CONFIG_DEBUG_RSEQ
|
||||
move a0, sp
|
||||
jal rseq_syscall
|
||||
#endif
|
||||
local_irq_disable # make sure need_resched and
|
||||
# signals dont change between
|
||||
# sampling and return
|
||||
|
@ -141,6 +145,10 @@ work_notifysig: # deal with pending signals and
|
|||
j resume_userspace_check
|
||||
|
||||
FEXPORT(syscall_exit_partial)
|
||||
#ifdef CONFIG_DEBUG_RSEQ
|
||||
move a0, sp
|
||||
jal rseq_syscall
|
||||
#endif
|
||||
local_irq_disable # make sure need_resched doesn't
|
||||
# change between and return
|
||||
LONG_L a2, TI_FLAGS($28) # current->work
|
||||
|
|
Loading…
Reference in a new issue