linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] arm64: Implement userspace syscall dispatch
@ 2021-05-29  8:16 houdek.ryan
  2021-05-29  8:16 ` [PATCH 1/4] Move userspace syscall dispatch outside of common entry houdek.ryan
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: houdek.ryan @ 2021-05-29  8:16 UTC (permalink / raw)
  Cc: linux-arm-kernel, linux-kernel, Ryan Houdek

From: Ryan Houdek <Houdek.Ryan@fex-emu.org>

arm64: Implement userspace syscall dispatch

The first patch moves the userspace dispatch code from the common
syscall entry path. This is necessary since arm64 doesn't support
the common syscall entry path.

The second patch exposes where the sigreturn landing pad location is.
The syscall user dispatch code checks this landing pad to see if
it should skip invoking the userspace dispatch path.

The third patch is where the userspace dispatcher work is hooked up
to arm64 syscall dispatcher. Fairly straight forward, adds a new check
to the trace enter and exit paths for user dispatch.

The fourth patch just updates the selftests to handle aarch64.

The sud_bench application shows a consistent 2.3% overhead on my device
when testing. Going from 477ns to 488ns per syscall.

Ryan Houdek (4):
  Move userspace syscall dispatch outside of common entry
  arm64: Track the sigreturn landing pad location
  arm64: Enable userspace syscall dispatch
  arm64: tools: Update syscall user dispatch tests

 arch/Kconfig                                  |  4 ++++
 arch/arm64/Kconfig                            |  1 +
 arch/arm64/include/asm/syscall.h              |  2 ++
 arch/arm64/include/asm/thread_info.h          |  4 +++-
 arch/arm64/kernel/ptrace.c                    | 24 +++++++++++++++++++
 arch/arm64/kernel/syscall.c                   |  9 +++++++
 arch/arm64/kernel/vdso/sigreturn.S            |  1 +
 arch/arm64/kernel/vdso/vdso.lds.S             |  1 +
 include/linux/syscall_user_dispatch.h         |  4 +++-
 kernel/entry/Makefile                         |  3 ++-
 kernel/entry/common.c                         |  3 +--
 kernel/entry/common.h                         |  7 ------
 kernel/entry/syscall_user_dispatch.c          |  2 --
 .../syscall_user_dispatch/sud_benchmark.c     |  2 +-
 .../syscall_user_dispatch/sud_test.c          |  9 +++++++
 15 files changed, 61 insertions(+), 15 deletions(-)
 delete mode 100644 kernel/entry/common.h

-- 
2.30.2


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/4] Move userspace syscall dispatch outside of common entry
  2021-05-29  8:16 [PATCH 0/4] arm64: Implement userspace syscall dispatch houdek.ryan
@ 2021-05-29  8:16 ` houdek.ryan
  2021-06-02 15:41   ` Thomas Gleixner
  2021-05-29  8:16 ` [PATCH 2/4] arm64: Track the sigreturn landing pad location houdek.ryan
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 7+ messages in thread
From: houdek.ryan @ 2021-05-29  8:16 UTC (permalink / raw)
  Cc: linux-arm-kernel, linux-kernel, Ryan Houdek

From: Ryan Houdek <Houdek.Ryan@fex-emu.org>

This will allow other architectures to support userspace syscall
dispatch without supporting the syscall common entry.

Signed-off-by: Ryan Houdek <Houdek.Ryan@fex-emu.org>
---
 arch/Kconfig                          | 4 ++++
 include/linux/syscall_user_dispatch.h | 4 +++-
 kernel/entry/Makefile                 | 3 ++-
 kernel/entry/common.c                 | 3 +--
 kernel/entry/common.h                 | 7 -------
 kernel/entry/syscall_user_dispatch.c  | 2 --
 6 files changed, 10 insertions(+), 13 deletions(-)
 delete mode 100644 kernel/entry/common.h

diff --git a/arch/Kconfig b/arch/Kconfig
index c45b770d3579..def67ebbae83 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -30,7 +30,11 @@ config SET_FS
 config HOTPLUG_SMT
 	bool
 
+config SYSCALL_USER_DISPATCH
+       bool
+
 config GENERIC_ENTRY
+       select SYSCALL_USER_DISPATCH
        bool
 
 config KPROBES
diff --git a/include/linux/syscall_user_dispatch.h b/include/linux/syscall_user_dispatch.h
index a0ae443fb7df..9d1e244d7021 100644
--- a/include/linux/syscall_user_dispatch.h
+++ b/include/linux/syscall_user_dispatch.h
@@ -7,7 +7,7 @@
 
 #include <linux/thread_info.h>
 
-#ifdef CONFIG_GENERIC_ENTRY
+#ifdef CONFIG_SYSCALL_USER_DISPATCH
 
 struct syscall_user_dispatch {
 	char __user	*selector;
@@ -16,6 +16,8 @@ struct syscall_user_dispatch {
 	bool		on_dispatch;
 };
 
+bool syscall_user_dispatch(struct pt_regs *regs);
+
 int set_syscall_user_dispatch(unsigned long mode, unsigned long offset,
 			      unsigned long len, char __user *selector);
 
diff --git a/kernel/entry/Makefile b/kernel/entry/Makefile
index 095c775e001e..35684390d56e 100644
--- a/kernel/entry/Makefile
+++ b/kernel/entry/Makefile
@@ -9,5 +9,6 @@ KCOV_INSTRUMENT := n
 CFLAGS_REMOVE_common.o	 = -fstack-protector -fstack-protector-strong
 CFLAGS_common.o		+= -fno-stack-protector
 
-obj-$(CONFIG_GENERIC_ENTRY) 		+= common.o syscall_user_dispatch.o
+obj-$(CONFIG_GENERIC_ENTRY) 		+= common.o
+obj-$(CONFIG_SYSCALL_USER_DISPATCH)	+= syscall_user_dispatch.o
 obj-$(CONFIG_KVM_XFER_TO_GUEST_WORK)	+= kvm.o
diff --git a/kernel/entry/common.c b/kernel/entry/common.c
index a0b3b04fb596..84ea1e66e0b2 100644
--- a/kernel/entry/common.c
+++ b/kernel/entry/common.c
@@ -5,8 +5,7 @@
 #include <linux/highmem.h>
 #include <linux/livepatch.h>
 #include <linux/audit.h>
-
-#include "common.h"
+#include <linux/syscall_user_dispatch.h>
 
 #define CREATE_TRACE_POINTS
 #include <trace/events/syscalls.h>
diff --git a/kernel/entry/common.h b/kernel/entry/common.h
deleted file mode 100644
index f6e6d02f07fe..000000000000
--- a/kernel/entry/common.h
+++ /dev/null
@@ -1,7 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef _COMMON_H
-#define _COMMON_H
-
-bool syscall_user_dispatch(struct pt_regs *regs);
-
-#endif
diff --git a/kernel/entry/syscall_user_dispatch.c b/kernel/entry/syscall_user_dispatch.c
index c240302f56e2..352da8427b01 100644
--- a/kernel/entry/syscall_user_dispatch.c
+++ b/kernel/entry/syscall_user_dispatch.c
@@ -14,8 +14,6 @@
 
 #include <asm/syscall.h>
 
-#include "common.h"
-
 static void trigger_sigsys(struct pt_regs *regs)
 {
 	struct kernel_siginfo info;
-- 
2.30.2


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 2/4] arm64: Track the sigreturn landing pad location
  2021-05-29  8:16 [PATCH 0/4] arm64: Implement userspace syscall dispatch houdek.ryan
  2021-05-29  8:16 ` [PATCH 1/4] Move userspace syscall dispatch outside of common entry houdek.ryan
@ 2021-05-29  8:16 ` houdek.ryan
  2021-05-29  8:16 ` [PATCH 3/4] arm64: Enable userspace syscall dispatch houdek.ryan
  2021-05-29  8:16 ` [PATCH 4/4] arm64: tools: Update syscall user dispatch tests houdek.ryan
  3 siblings, 0 replies; 7+ messages in thread
From: houdek.ryan @ 2021-05-29  8:16 UTC (permalink / raw)
  Cc: linux-arm-kernel, linux-kernel, Ryan Houdek

From: Ryan Houdek <Houdek.Ryan@fex-emu.org>

This will be required once userspace dispatch is implemented

Signed-off-by: Ryan Houdek <Houdek.Ryan@fex-emu.org>
---
 arch/arm64/kernel/vdso/sigreturn.S | 1 +
 arch/arm64/kernel/vdso/vdso.lds.S  | 1 +
 2 files changed, 2 insertions(+)

diff --git a/arch/arm64/kernel/vdso/sigreturn.S b/arch/arm64/kernel/vdso/sigreturn.S
index 0e18729abc3b..44ed8c5486d0 100644
--- a/arch/arm64/kernel/vdso/sigreturn.S
+++ b/arch/arm64/kernel/vdso/sigreturn.S
@@ -73,6 +73,7 @@ SYM_CODE_START(__kernel_rt_sigreturn)
 	mov	x8, #__NR_rt_sigreturn
 //	PLEASE DO NOT MODIFY
 	svc	#0
+SYM_INNER_LABEL(__kernel_vdso_sigreturn_landing_pad, SYM_L_GLOBAL)
 //	PLEASE DO NOT MODIFY
 //	.cfi_endproc
 SYM_CODE_END(__kernel_rt_sigreturn)
diff --git a/arch/arm64/kernel/vdso/vdso.lds.S b/arch/arm64/kernel/vdso/vdso.lds.S
index a5e61e09ea92..65d2bd880e2f 100644
--- a/arch/arm64/kernel/vdso/vdso.lds.S
+++ b/arch/arm64/kernel/vdso/vdso.lds.S
@@ -91,3 +91,4 @@ VERSION
  * Make the sigreturn code visible to the kernel.
  */
 VDSO_sigtramp		= __kernel_rt_sigreturn;
+VDSO_vdso_sigreturn_landing_pad	= __kernel_vdso_sigreturn_landing_pad;
-- 
2.30.2


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 3/4] arm64: Enable userspace syscall dispatch
  2021-05-29  8:16 [PATCH 0/4] arm64: Implement userspace syscall dispatch houdek.ryan
  2021-05-29  8:16 ` [PATCH 1/4] Move userspace syscall dispatch outside of common entry houdek.ryan
  2021-05-29  8:16 ` [PATCH 2/4] arm64: Track the sigreturn landing pad location houdek.ryan
@ 2021-05-29  8:16 ` houdek.ryan
  2021-05-29  8:16 ` [PATCH 4/4] arm64: tools: Update syscall user dispatch tests houdek.ryan
  3 siblings, 0 replies; 7+ messages in thread
From: houdek.ryan @ 2021-05-29  8:16 UTC (permalink / raw)
  Cc: linux-arm-kernel, linux-kernel, Ryan Houdek

From: Ryan Houdek <Houdek.Ryan@fex-emu.org>

When `PR_SET_SYSCALL_USER_DISPATCH` is used this will set the thread's
flags to enable `TIF_SYSCALL_USER_DISPATCH`.

This allows us to support userspace dispatch of syscalls through SIGSYS.
This has feature parity with what is available on x86-64

Signed-off-by: Ryan Houdek <Houdek.Ryan@fex-emu.org>
---
 arch/arm64/Kconfig                   |  1 +
 arch/arm64/include/asm/syscall.h     |  2 ++
 arch/arm64/include/asm/thread_info.h |  4 +++-
 arch/arm64/kernel/ptrace.c           | 24 ++++++++++++++++++++++++
 arch/arm64/kernel/syscall.c          |  9 +++++++++
 5 files changed, 39 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 9f1d8566bbf9..8c5f2d1c7053 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -220,6 +220,7 @@ config ARM64
 	select SYSCTL_EXCEPTION_TRACE
 	select THREAD_INFO_IN_TASK
 	select HAVE_ARCH_USERFAULTFD_MINOR if USERFAULTFD
+	select SYSCALL_USER_DISPATCH
 	help
 	  ARM 64-bit (AArch64) Linux support.
 
diff --git a/arch/arm64/include/asm/syscall.h b/arch/arm64/include/asm/syscall.h
index cfc0672013f6..8f6417822139 100644
--- a/arch/arm64/include/asm/syscall.h
+++ b/arch/arm64/include/asm/syscall.h
@@ -94,4 +94,6 @@ static inline int syscall_get_arch(struct task_struct *task)
 	return AUDIT_ARCH_AARCH64;
 }
 
+extern bool arch_syscall_is_vdso_sigreturn(struct pt_regs *regs);
+
 #endif	/* __ASM_SYSCALL_H */
diff --git a/arch/arm64/include/asm/thread_info.h b/arch/arm64/include/asm/thread_info.h
index 6623c99f0984..7b9c6225c3c7 100644
--- a/arch/arm64/include/asm/thread_info.h
+++ b/arch/arm64/include/asm/thread_info.h
@@ -81,6 +81,7 @@ int arch_dup_task_struct(struct task_struct *dst,
 #define TIF_SVE_VL_INHERIT	24	/* Inherit sve_vl_onexec across exec */
 #define TIF_SSBD		25	/* Wants SSB mitigation */
 #define TIF_TAGGED_ADDR		26	/* Allow tagged user addresses */
+#define TIF_SYSCALL_USER_DISPATCH 27 /* Allow userspace syscall dispatch */
 
 #define _TIF_SIGPENDING		(1 << TIF_SIGPENDING)
 #define _TIF_NEED_RESCHED	(1 << TIF_NEED_RESCHED)
@@ -97,6 +98,7 @@ int arch_dup_task_struct(struct task_struct *dst,
 #define _TIF_SVE		(1 << TIF_SVE)
 #define _TIF_MTE_ASYNC_FAULT	(1 << TIF_MTE_ASYNC_FAULT)
 #define _TIF_NOTIFY_SIGNAL	(1 << TIF_NOTIFY_SIGNAL)
+#define _TIF_SYSCALL_USER_DISPATCH (1 << TIF_SYSCALL_USER_DISPATCH)
 
 #define _TIF_WORK_MASK		(_TIF_NEED_RESCHED | _TIF_SIGPENDING | \
 				 _TIF_NOTIFY_RESUME | _TIF_FOREIGN_FPSTATE | \
@@ -105,7 +107,7 @@ int arch_dup_task_struct(struct task_struct *dst,
 
 #define _TIF_SYSCALL_WORK	(_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | \
 				 _TIF_SYSCALL_TRACEPOINT | _TIF_SECCOMP | \
-				 _TIF_SYSCALL_EMU)
+				 _TIF_SYSCALL_EMU | _TIF_SYSCALL_USER_DISPATCH)
 
 #ifdef CONFIG_SHADOW_CALL_STACK
 #define INIT_SCS							\
diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c
index eb2f73939b7b..ddff7d916592 100644
--- a/arch/arm64/kernel/ptrace.c
+++ b/arch/arm64/kernel/ptrace.c
@@ -13,6 +13,7 @@
 #include <linux/kernel.h>
 #include <linux/sched/signal.h>
 #include <linux/sched/task_stack.h>
+#include <linux/syscall_user_dispatch.h>
 #include <linux/mm.h>
 #include <linux/nospec.h>
 #include <linux/smp.h>
@@ -1836,6 +1837,16 @@ int syscall_trace_enter(struct pt_regs *regs)
 {
 	unsigned long flags = READ_ONCE(current_thread_info()->flags);
 
+	/*
+	 * Handle Syscall User Dispatch.  This must comes first, since
+	 * the ABI here can be something that doesn't make sense for
+	 * other syscall_work features.
+	 */
+	if (flags & _TIF_SYSCALL_USER_DISPATCH) {
+		if (syscall_user_dispatch(regs))
+			return NO_SYSCALL;
+	}
+
 	if (flags & (_TIF_SYSCALL_EMU | _TIF_SYSCALL_TRACE)) {
 		tracehook_report_syscall(regs, PTRACE_SYSCALL_ENTER);
 		if (flags & _TIF_SYSCALL_EMU)
@@ -1859,6 +1870,19 @@ void syscall_trace_exit(struct pt_regs *regs)
 {
 	unsigned long flags = READ_ONCE(current_thread_info()->flags);
 
+	/*
+	 * If the syscall was rolled back due to syscall user dispatching,
+	 * then the tracers below are not invoked for the same reason as
+	 * the entry side was not invoked in syscall_trace_enter(): The ABI
+	 * of these syscalls is unknown.
+	 */
+	if (flags & _TIF_SYSCALL_USER_DISPATCH) {
+		if (unlikely(current->syscall_dispatch.on_dispatch)) {
+			current->syscall_dispatch.on_dispatch = false;
+			return;
+		}
+	}
+
 	audit_syscall_exit(regs);
 
 	if (flags & _TIF_SYSCALL_TRACEPOINT)
diff --git a/arch/arm64/kernel/syscall.c b/arch/arm64/kernel/syscall.c
index 263d6c1a525f..2630cffe5725 100644
--- a/arch/arm64/kernel/syscall.c
+++ b/arch/arm64/kernel/syscall.c
@@ -15,6 +15,7 @@
 #include <asm/syscall.h>
 #include <asm/thread_info.h>
 #include <asm/unistd.h>
+#include <asm/vdso.h>
 
 long compat_arm_syscall(struct pt_regs *regs, int scno);
 long sys_ni_syscall(void);
@@ -191,3 +192,11 @@ void do_el0_svc_compat(struct pt_regs *regs)
 		       compat_sys_call_table);
 }
 #endif
+
+bool arch_syscall_is_vdso_sigreturn(struct pt_regs *regs)
+{
+	if (regs->pc == (unsigned long)VDSO_SYMBOL(current->mm->context.vdso,
+		vdso_sigreturn_landing_pad))
+		return true;
+	return false;
+}
-- 
2.30.2


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 4/4] arm64: tools: Update syscall user dispatch tests
  2021-05-29  8:16 [PATCH 0/4] arm64: Implement userspace syscall dispatch houdek.ryan
                   ` (2 preceding siblings ...)
  2021-05-29  8:16 ` [PATCH 3/4] arm64: Enable userspace syscall dispatch houdek.ryan
@ 2021-05-29  8:16 ` houdek.ryan
  3 siblings, 0 replies; 7+ messages in thread
From: houdek.ryan @ 2021-05-29  8:16 UTC (permalink / raw)
  Cc: linux-arm-kernel, linux-kernel, Ryan Houdek

From: Ryan Houdek <Houdek.Ryan@fex-emu.org>

This is a fairly trivial change to support syscall user dispatch in
these selftests.

One of the tests is relying on the syscall to return the syscall number
in the return. Which is a byproduct from the scnum and return registers
being the same.
Since arm64 places the scnum in x8 and the return in x0 it just needs to
move the result over.

Signed-off-by: Ryan Houdek <Houdek.Ryan@fex-emu.org>
---
 .../selftests/syscall_user_dispatch/sud_benchmark.c      | 2 +-
 tools/testing/selftests/syscall_user_dispatch/sud_test.c | 9 +++++++++
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/syscall_user_dispatch/sud_benchmark.c b/tools/testing/selftests/syscall_user_dispatch/sud_benchmark.c
index 073a03702ff5..6059abe75cb3 100644
--- a/tools/testing/selftests/syscall_user_dispatch/sud_benchmark.c
+++ b/tools/testing/selftests/syscall_user_dispatch/sud_benchmark.c
@@ -41,7 +41,7 @@
  * out of the box, but don't enable them until they support syscall user
  * dispatch.
  */
-#if defined(__x86_64__) || defined(__i386__)
+#if defined(__x86_64__) || defined(__i386__) || defined(__aarch64__)
 #define TEST_BLOCKED_RETURN
 #endif
 
diff --git a/tools/testing/selftests/syscall_user_dispatch/sud_test.c b/tools/testing/selftests/syscall_user_dispatch/sud_test.c
index b5d592d4099e..11cf4ad6aa6e 100644
--- a/tools/testing/selftests/syscall_user_dispatch/sud_test.c
+++ b/tools/testing/selftests/syscall_user_dispatch/sud_test.c
@@ -150,6 +150,15 @@ int si_errno;
 
 static void handle_sigsys(int sig, siginfo_t *info, void *ucontext)
 {
+#ifdef __aarch64__
+	/* This test expects the syscall number will be returned in r0
+	 * Copy it over from r8 which is the scnum in the ABI
+	 */
+	ucontext_t *_context = (ucontext_t *)ucontext;
+
+	_context->uc_mcontext.regs[0] = _context->uc_mcontext.regs[8];
+#endif
+
 	si_code = info->si_code;
 	si_errno = info->si_errno;
 
-- 
2.30.2


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/4] Move userspace syscall dispatch outside of common entry
  2021-05-29  8:16 ` [PATCH 1/4] Move userspace syscall dispatch outside of common entry houdek.ryan
@ 2021-06-02 15:41   ` Thomas Gleixner
  2021-06-03 10:58     ` Ryan Houdek
  0 siblings, 1 reply; 7+ messages in thread
From: Thomas Gleixner @ 2021-06-02 15:41 UTC (permalink / raw)
  To: houdek.ryan
  Cc: linux-arm-kernel, linux-kernel, Ryan Houdek, Peter Zijlstra,
	Andy Lutomirski

On Sat, May 29 2021 at 01:16, houdek ryan wrote:
> From: Ryan Houdek <Houdek.Ryan@fex-emu.org>
>
> This will allow other architectures to support userspace syscall
> dispatch without supporting the syscall common entry.

NAK.

This is in common entry on purpose and won't go anywhere else. The every
arch has it's own broken entry code ordering mess needs to go away and
not proliferated further.

Move ARM to common entry first.

Thanks,

        tglx

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/4] Move userspace syscall dispatch outside of common entry
  2021-06-02 15:41   ` Thomas Gleixner
@ 2021-06-03 10:58     ` Ryan Houdek
  0 siblings, 0 replies; 7+ messages in thread
From: Ryan Houdek @ 2021-06-03 10:58 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Linux ARM, Linux Kernel Mailing List, Peter Zijlstra, Andy Lutomirski

Okay. I will carry this patchset in a downstream fork until that happens then.

On Wed, Jun 2, 2021 at 8:41 AM Thomas Gleixner <tglx@linutronix.de> wrote:
>
> On Sat, May 29 2021 at 01:16, houdek ryan wrote:
> > From: Ryan Houdek <Houdek.Ryan@fex-emu.org>
> >
> > This will allow other architectures to support userspace syscall
> > dispatch without supporting the syscall common entry.
>
> NAK.
>
> This is in common entry on purpose and won't go anywhere else. The every
> arch has it's own broken entry code ordering mess needs to go away and
> not proliferated further.
>
> Move ARM to common entry first.
>
> Thanks,
>
>         tglx

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-06-03 11:00 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-29  8:16 [PATCH 0/4] arm64: Implement userspace syscall dispatch houdek.ryan
2021-05-29  8:16 ` [PATCH 1/4] Move userspace syscall dispatch outside of common entry houdek.ryan
2021-06-02 15:41   ` Thomas Gleixner
2021-06-03 10:58     ` Ryan Houdek
2021-05-29  8:16 ` [PATCH 2/4] arm64: Track the sigreturn landing pad location houdek.ryan
2021-05-29  8:16 ` [PATCH 3/4] arm64: Enable userspace syscall dispatch houdek.ryan
2021-05-29  8:16 ` [PATCH 4/4] arm64: tools: Update syscall user dispatch tests houdek.ryan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).