Skip to content

Commit

Permalink
ARM: ptrace: Restore syscall restart tracing
Browse files Browse the repository at this point in the history
[ Upstream commit cf00764 ]

Since commit 4e57a4d ("ARM: 9107/1: syscall: always store
thread_info->abi_syscall"), the seccomp selftests "syscall_restart" has
been broken. This was caused by the restart syscall not being stored to
"abi_syscall" during restart setup before branching to the "local_restart"
label. Tracers would see the wrong syscall, and scno would get overwritten
while returning from the TIF_WORK path. Add the missing store.

Cc: Russell King <[email protected]>
Cc: Arnd Bergmann <[email protected]>
Cc: Lecopzer Chen <[email protected]>
Cc: Oleg Nesterov <[email protected]>
Cc: [email protected]
Fixes: 4e57a4d ("ARM: 9107/1: syscall: always store thread_info->abi_syscall")
Reviewed-by: Arnd Bergmann <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Kees Cook <[email protected]>
Signed-off-by: Sasha Levin <[email protected]>
  • Loading branch information
kees authored and gregkh committed Sep 13, 2023
1 parent a8d3a6e commit f8e97a0
Showing 1 changed file with 1 addition and 0 deletions.
1 change: 1 addition & 0 deletions arch/arm/kernel/entry-common.S
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ slow_work_pending:
cmp r0, #0
beq no_work_pending
movlt scno, #(__NR_restart_syscall - __NR_SYSCALL_BASE)
str scno, [tsk, #TI_ABI_SYSCALL] @ make sure tracers see update
ldmia sp, {r0 - r6} @ have to reload r0 - r6
b local_restart @ ... and off we go
ENDPROC(ret_fast_syscall)
Expand Down

0 comments on commit f8e97a0

Please sign in to comment.