s390: fix system call restart after inferior call
Git commit 616498813b
"s390: system call path micro optimization"
introduced a regression in regard to system call restarting and inferior
function calls via the ptrace interface. The pointer to the system call
table needs to be loaded in sysc_sigpending if do_signal returns with
TIF_SYSCALl set after it restored a system call context.
Cc: stable@vger.kernel.org # 3.10+
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
@@ -266,6 +266,7 @@ sysc_sigpending:
|
|||||||
tm __TI_flags+3(%r12),_TIF_SYSCALL
|
tm __TI_flags+3(%r12),_TIF_SYSCALL
|
||||||
jno sysc_return
|
jno sysc_return
|
||||||
lm %r2,%r7,__PT_R2(%r11) # load svc arguments
|
lm %r2,%r7,__PT_R2(%r11) # load svc arguments
|
||||||
|
l %r10,__TI_sysc_table(%r12) # 31 bit system call table
|
||||||
xr %r8,%r8 # svc 0 returns -ENOSYS
|
xr %r8,%r8 # svc 0 returns -ENOSYS
|
||||||
clc __PT_INT_CODE+2(2,%r11),BASED(.Lnr_syscalls+2)
|
clc __PT_INT_CODE+2(2,%r11),BASED(.Lnr_syscalls+2)
|
||||||
jnl sysc_nr_ok # invalid svc number -> do svc 0
|
jnl sysc_nr_ok # invalid svc number -> do svc 0
|
||||||
|
@@ -297,6 +297,7 @@ sysc_sigpending:
|
|||||||
tm __TI_flags+7(%r12),_TIF_SYSCALL
|
tm __TI_flags+7(%r12),_TIF_SYSCALL
|
||||||
jno sysc_return
|
jno sysc_return
|
||||||
lmg %r2,%r7,__PT_R2(%r11) # load svc arguments
|
lmg %r2,%r7,__PT_R2(%r11) # load svc arguments
|
||||||
|
lg %r10,__TI_sysc_table(%r12) # address of system call table
|
||||||
lghi %r8,0 # svc 0 returns -ENOSYS
|
lghi %r8,0 # svc 0 returns -ENOSYS
|
||||||
llgh %r1,__PT_INT_CODE+2(%r11) # load new svc number
|
llgh %r1,__PT_INT_CODE+2(%r11) # load new svc number
|
||||||
cghi %r1,NR_syscalls
|
cghi %r1,NR_syscalls
|
||||||
|
Reference in New Issue
Block a user