Skip to contentSkip to conversation

parisc/entry: fix trace test in syscall exit path

PATCH In review Helge Deller 2 participants 2 messages Nov 16, 2021 – Nov 19, 2021 Stable branch

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 parisc/entry: fix trace test in syscall exit path

Please apply this patch to the stable kernels up to v5.15.

It's basically upstream commit 3ec18fc7831e7d79e2d536dd1f3bc0d3ba425e8a, adjusted so that it applies to the stable kernels.

It requires that upstream commit 8779e05ba8aaffec1829872ef9774a71f44f6580 is applied before, which shouldn't be a problem as it was tagged for stable series in the original commmit already.

Thanks,
Helge
--------

From: Sven Schnelle <[email protected]>
Date: Sat, 13 Nov 2021 20:41:17 +0100
Subject: [PATCH] parisc/entry: fix trace test in syscall exit path

Upstream commit: 3ec18fc7831e7d79e2d536dd1f3bc0d3ba425e8a

commit 8779e05ba8aa ("parisc: Fix ptrace check on syscall return") fixed testing of TI_FLAGS. This uncovered a bug in the test mask. syscall_restore_rfi is only used when the kernel needs to exit to usespace with single or block stepping and the recovery counter enabled. The test however used _TIF_SYSCALL_TRACE_MASK, which includes a lot of bits that shouldn't be tested here.

Fix this by using TIF_SINGLESTEP and TIF_BLOCKSTEP directly.

I encountered this bug by enabling syscall tracepoints. Both in qemu and on real hardware. As soon as i enabled the tracepoint (sys_exit_read, but i guess it doesn't really matter which one), i got random page faults in userspace almost immediately.

arch/parisc/kernel/entry.S +1 -1
index 2716e58b498b..437c8d31f390 100644
@@ -1835,7 +1835,7 @@ syscall_restore:
 
 	/* Are we being ptraced? */
 	LDREG	TI_FLAGS-THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r19
-	ldi	_TIF_SYSCALL_TRACE_MASK,%r2
+	ldi	_TIF_SINGLESTEP|_TIF_BLOCKSTEP,%r2
 	and,COND(=)	%r19,%r2,%r0
 	b,n	syscall_restore_rfi
 
#1 lore raw
Quoted 8 lines · Helge Deller

Please apply this patch to the stable kernels up to v5.15.

It's basically upstream commit 3ec18fc7831e7d79e2d536dd1f3bc0d3ba425e8a, adjusted so that it applies to the stable kernels.

It requires that upstream commit 8779e05ba8aaffec1829872ef9774a71f44f6580 is applied before, which shouldn't be a problem as it was tagged for stable series in the original commmit already.

Now queued up, thanks.

greg k-h