diff mbox series

[SRU,bionic,1/2] s390/ptrace: pass invalid syscall numbers to tracing

Message ID 20210421135436.394371-1-ddstreet@canonical.com
State New
Headers show
Series [SRU,bionic,1/2] s390/ptrace: pass invalid syscall numbers to tracing | expand

Commit Message

Dan Streetman April 21, 2021, 1:54 p.m. UTC
From: Sven Schnelle <svens@linux.ibm.com>

BugLink: https://bugs.launchpad.net/bugs/1916485

tracing expects to see invalid syscalls, so pass it through.
The syscall path in entry.S checks the syscall number before
looking up the handler, so it is still safe.

Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
(cherry picked from commit 00332c16b1604242a56289ff2b26e283dbad0812)
Signed-off-by: Dan Streetman <ddstreet@canonical.com>
---
 arch/s390/kernel/entry.S  | 2 +-
 arch/s390/kernel/ptrace.c | 6 ++----
 2 files changed, 3 insertions(+), 5 deletions(-)

Comments

Krzysztof Kozlowski April 21, 2021, 4:23 p.m. UTC | #1
On 21/04/2021 15:54, Dan Streetman wrote:
> From: Sven Schnelle <svens@linux.ibm.com>
> 
> BugLink: https://bugs.launchpad.net/bugs/1916485

The SRU mentioned in buglink describes systemd impact, not kernel. You
need SRU cover letter. Unless you meant:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1895132
?

The patches should be sent in the same order as in upstream, so first
goes "return -ENOSYS when invalid syscall is supplied"

Best regards,
Krzysztof
diff mbox series

Patch

diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S
index cf1112a9fc41..80c4386225f2 100644
--- a/arch/s390/kernel/entry.S
+++ b/arch/s390/kernel/entry.S
@@ -383,9 +383,9 @@  ENTRY(system_call)
 	jnz	.Lsysc_nr_ok
 	# svc 0: system call number in %r1
 	llgfr	%r1,%r1				# clear high word in r1
+	sth	%r1,__PT_INT_CODE+2(%r11)
 	cghi	%r1,NR_syscalls
 	jnl	.Lsysc_nr_ok
-	sth	%r1,__PT_INT_CODE+2(%r11)
 	slag	%r8,%r1,2
 .Lsysc_nr_ok:
 	xc	__SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15)
diff --git a/arch/s390/kernel/ptrace.c b/arch/s390/kernel/ptrace.c
index 3ffa2847c110..713e792ed24c 100644
--- a/arch/s390/kernel/ptrace.c
+++ b/arch/s390/kernel/ptrace.c
@@ -874,11 +874,9 @@  asmlinkage long do_syscall_trace_enter(struct pt_regs *regs)
 	 * call number to gprs[2].
 	 */
 	if (test_thread_flag(TIF_SYSCALL_TRACE) &&
-	    (tracehook_report_syscall_entry(regs) ||
-	     regs->gprs[2] >= NR_syscalls)) {
+	    tracehook_report_syscall_entry(regs)) {
 		/*
-		 * Tracing decided this syscall should not happen or the
-		 * debugger stored an invalid system call number. Skip
+		 * Tracing decided this syscall should not happen. Skip
 		 * the system call and the system call restart handling.
 		 */
 		clear_pt_regs_flag(regs, PIF_SYSCALL);