Linux Documentation
 help / color / mirror / Atom feed
* [PATCH v2 0/2] syscall_user_dispatch: add build/runtime configs
@ 2026-07-04  1:58 Gregory Price
  2026-07-04  1:58 ` [PATCH v2 1/2] syscall_user_dispatch: Make it configurable in Kconfig Gregory Price
  2026-07-04  1:58 ` [PATCH v2 2/2] syscall_user_dispatch: add kernel.syscall_user_dispatch sysctl Gregory Price
  0 siblings, 2 replies; 11+ messages in thread
From: Gregory Price @ 2026-07-04  1:58 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-doc, corbet, skhan, tglx, peterz, luto, akpm, feng.tang,
	pmladek, lance.yang, marc.herbert, kees, leitao, gourry,
	joel.granados, lirongqing, nathan, xur, lukas.bulwahn,
	ryan.roberts

Syscall User Dispatch is presently compiled in by default for all
architectures enabling CONFIG_GENERIC_SYSCALL, and some users may
not wish to have the feature functional at runtime.

Add CONFIG_SYSCALL_USER_DISPATCH and kernel.syscall_user_dispatch
to make it a configurable feature at both build and runtime.

CONFIG_SYSCALL_USER_DISPATCH depends on CONFIG_GENERIC_SYSCALL
but is separately configurable.

The sysctl is enabled by default, and disabling the feature while a
task has already enabled it does not cause it to become inactive in
that task's conetxt. Instead it remains active until the user attempts
to disable/re-enable via prctl or ptrace.  On the next attempt to
re-enable, the prctl/ptrace call fails gracefully.

Gregory Price (2):
  syscall_user_dispatch: Make it configurable in Kconfig
  syscall_user_dispatch: add kernel.syscall_user_dispatch sysctl

 Documentation/admin-guide/sysctl/kernel.rst | 16 ++++++++++++
 arch/Kconfig                                | 11 ++++++++
 include/linux/entry-common.h                |  6 ++---
 include/linux/syscall_user_dispatch.h       | 28 +++++++++++++++++++--
 include/linux/syscall_user_dispatch_types.h |  2 +-
 kernel/entry/Makefile                       |  3 ++-
 kernel/entry/syscall_user_dispatch.c        | 28 +++++++++++++++++++++
 7 files changed, 86 insertions(+), 8 deletions(-)

-- 
2.54.0


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

* [PATCH v2 1/2] syscall_user_dispatch: Make it configurable in Kconfig
  2026-07-04  1:58 [PATCH v2 0/2] syscall_user_dispatch: add build/runtime configs Gregory Price
@ 2026-07-04  1:58 ` Gregory Price
  2026-07-04 15:22   ` Matthew Wilcox
  2026-07-05 20:31   ` Thomas Gleixner
  2026-07-04  1:58 ` [PATCH v2 2/2] syscall_user_dispatch: add kernel.syscall_user_dispatch sysctl Gregory Price
  1 sibling, 2 replies; 11+ messages in thread
From: Gregory Price @ 2026-07-04  1:58 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-doc, corbet, skhan, tglx, peterz, luto, akpm, feng.tang,
	pmladek, lance.yang, marc.herbert, kees, leitao, gourry,
	joel.granados, lirongqing, nathan, xur, lukas.bulwahn,
	ryan.roberts

Syscall User Dispatch is presently built under CONFIG_GENERIC_SYSCALL
and cannot be disabled independently.

Add CONFIG_SYSCALL_USER_DISPATCH to make it an optional feature.

Signed-off-by: Gregory Price <gourry@gourry.net>
---
 arch/Kconfig                                | 11 ++++++++
 include/linux/entry-common.h                |  6 ++---
 include/linux/syscall_user_dispatch.h       | 28 +++++++++++++++++++--
 include/linux/syscall_user_dispatch_types.h |  2 +-
 kernel/entry/Makefile                       |  3 ++-
 5 files changed, 42 insertions(+), 8 deletions(-)

diff --git a/arch/Kconfig b/arch/Kconfig
index fa7507ac8e13..192b9d8abb5f 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -114,6 +114,17 @@ config GENERIC_ENTRY
 	select GENERIC_IRQ_ENTRY
 	select GENERIC_SYSCALL
 
+config SYSCALL_USER_DISPATCH
+	bool "Syscall User Dispatch"
+	depends on GENERIC_ENTRY
+	default y
+	help
+	  Syscall User Dispatch lets a thread have its own system calls outside
+          an allowed IP address range to be intercepted and redirected to a
+          userspace signal handler.
+
+	  If unsure, say Y.
+
 config KPROBES
 	bool "Kprobes"
 	depends on HAVE_KPROBES
diff --git a/include/linux/entry-common.h b/include/linux/entry-common.h
index 416a3352261f..9336516430a1 100644
--- a/include/linux/entry-common.h
+++ b/include/linux/entry-common.h
@@ -9,6 +9,7 @@
 #include <linux/resume_user_mode.h>
 #include <linux/seccomp.h>
 #include <linux/sched.h>
+#include <linux/syscall_user_dispatch.h>
 
 #include <asm/entry-common.h>
 #include <asm/syscall.h>
@@ -55,7 +56,6 @@ static __always_inline int arch_ptrace_report_syscall_entry(struct pt_regs *regs
 }
 #endif
 
-bool syscall_user_dispatch(struct pt_regs *regs);
 long trace_syscall_enter(struct pt_regs *regs, long syscall);
 void trace_syscall_exit(struct pt_regs *regs, long ret);
 
@@ -232,10 +232,8 @@ static __always_inline void syscall_exit_work(struct pt_regs *regs, unsigned lon
 	 * of these syscalls is unknown.
 	 */
 	if (work & SYSCALL_WORK_SYSCALL_USER_DISPATCH) {
-		if (unlikely(current->syscall_dispatch.on_dispatch)) {
-			current->syscall_dispatch.on_dispatch = false;
+		if (syscall_user_dispatch_clear_on_dispatch())
 			return;
-		}
 	}
 
 	audit_syscall_exit(regs);
diff --git a/include/linux/syscall_user_dispatch.h b/include/linux/syscall_user_dispatch.h
index 3858a6ffdd5c..c466af02da36 100644
--- a/include/linux/syscall_user_dispatch.h
+++ b/include/linux/syscall_user_dispatch.h
@@ -7,8 +7,22 @@
 
 #include <linux/thread_info.h>
 #include <linux/syscall_user_dispatch_types.h>
+#include <linux/sched.h>
 
-#ifdef CONFIG_GENERIC_ENTRY
+struct pt_regs;
+
+#ifdef CONFIG_SYSCALL_USER_DISPATCH
+
+bool syscall_user_dispatch(struct pt_regs *regs);
+
+static __always_inline bool syscall_user_dispatch_clear_on_dispatch(void)
+{
+	if (likely(!current->syscall_dispatch.on_dispatch))
+		return false;
+
+	current->syscall_dispatch.on_dispatch = false;
+	return true;
+}
 
 int set_syscall_user_dispatch(unsigned long mode, unsigned long offset,
 			      unsigned long len, char __user *selector);
@@ -24,6 +38,16 @@ int syscall_user_dispatch_set_config(struct task_struct *task, unsigned long siz
 
 #else
 
+static inline bool syscall_user_dispatch(struct pt_regs *regs)
+{
+	return false;
+}
+
+static inline bool syscall_user_dispatch_clear_on_dispatch(void)
+{
+	return false;
+}
+
 static inline int set_syscall_user_dispatch(unsigned long mode, unsigned long offset,
 					    unsigned long len, char __user *selector)
 {
@@ -46,6 +70,6 @@ static inline int syscall_user_dispatch_set_config(struct task_struct *task,
 	return -EINVAL;
 }
 
-#endif /* CONFIG_GENERIC_ENTRY */
+#endif /* CONFIG_SYSCALL_USER_DISPATCH */
 
 #endif /* _SYSCALL_USER_DISPATCH_H */
diff --git a/include/linux/syscall_user_dispatch_types.h b/include/linux/syscall_user_dispatch_types.h
index 3be36b06c7d7..c0bdd4f760d3 100644
--- a/include/linux/syscall_user_dispatch_types.h
+++ b/include/linux/syscall_user_dispatch_types.h
@@ -4,7 +4,7 @@
 
 #include <linux/types.h>
 
-#ifdef CONFIG_GENERIC_ENTRY
+#ifdef CONFIG_SYSCALL_USER_DISPATCH
 
 struct syscall_user_dispatch {
 	char __user	*selector;
diff --git a/kernel/entry/Makefile b/kernel/entry/Makefile
index 2333d70802e4..f220bae86b12 100644
--- a/kernel/entry/Makefile
+++ b/kernel/entry/Makefile
@@ -13,5 +13,6 @@ CFLAGS_REMOVE_common.o	 = -fstack-protector -fstack-protector-strong
 CFLAGS_common.o		+= -fno-stack-protector
 
 obj-$(CONFIG_GENERIC_IRQ_ENTRY) 	+= common.o
-obj-$(CONFIG_GENERIC_SYSCALL) 		+= syscall-common.o syscall_user_dispatch.o
+obj-$(CONFIG_GENERIC_SYSCALL) 		+= syscall-common.o
+obj-$(CONFIG_SYSCALL_USER_DISPATCH)	+= syscall_user_dispatch.o
 obj-$(CONFIG_VIRT_XFER_TO_GUEST_WORK)	+= virt.o
-- 
2.54.0


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

* [PATCH v2 2/2] syscall_user_dispatch: add kernel.syscall_user_dispatch sysctl
  2026-07-04  1:58 [PATCH v2 0/2] syscall_user_dispatch: add build/runtime configs Gregory Price
  2026-07-04  1:58 ` [PATCH v2 1/2] syscall_user_dispatch: Make it configurable in Kconfig Gregory Price
@ 2026-07-04  1:58 ` Gregory Price
  2026-07-05 20:35   ` Thomas Gleixner
  1 sibling, 1 reply; 11+ messages in thread
From: Gregory Price @ 2026-07-04  1:58 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-doc, corbet, skhan, tglx, peterz, luto, akpm, feng.tang,
	pmladek, lance.yang, marc.herbert, kees, leitao, gourry,
	joel.granados, lirongqing, nathan, xur, lukas.bulwahn,
	ryan.roberts

Add a matching sysctl to go with CONFIG_SYSCALL_USER_DISPATCH.

kernel.syscall_user_dispatch (default 1 - allow) controls whether
userspace may arm syscall user dispatch (both via prctl and ptrace).

Disarming is always permitted - same semantics as comparable knobs.

Disabling while a task has armed syscall user dispatch does not
cause it to become inactive - instead it remains active until the
user attempts to disable/re-enable via prctl or ptrace.  On the
next attempt to re-enable, the prctl/ptrace call fails gracefully.

The alternative would cause programs translating non-linux syscalls
to interpret those syscalls as linux syscalls, resulting in undefined
userland behavior.

Signed-off-by: Gregory Price <gourry@gourry.net>
---
 Documentation/admin-guide/sysctl/kernel.rst | 16 ++++++++++++
 kernel/entry/syscall_user_dispatch.c        | 28 +++++++++++++++++++++
 2 files changed, 44 insertions(+)

diff --git a/Documentation/admin-guide/sysctl/kernel.rst b/Documentation/admin-guide/sysctl/kernel.rst
index c6994e55d141..46e418e686c2 100644
--- a/Documentation/admin-guide/sysctl/kernel.rst
+++ b/Documentation/admin-guide/sysctl/kernel.rst
@@ -1402,6 +1402,22 @@ Note that if you change this from 0 to 1, already created segments
 without users and with a dead originative process will be destroyed.
 
 
+syscall_user_dispatch
+=====================
+
+Controls whether userspace may arm Syscall User Dispatch via
+``prctl(PR_SET_SYSCALL_USER_DISPATCH, ...)`` or the
+``PTRACE_SET_SYSCALL_USER_DISPATCH_CONFIG`` ptrace request:
+
+  ==  ===================================================================
+  0   Arming syscall user dispatch is denied with ``-EPERM``.  Tasks that
+      already armed it keep it, and disabling it is always permitted.
+  1   (default) Arming syscall user dispatch is permitted.
+  ==  ===================================================================
+
+Only present when the kernel is built with ``CONFIG_SYSCALL_USER_DISPATCH``.
+
+
 sysctl_writes_strict
 ====================
 
diff --git a/kernel/entry/syscall_user_dispatch.c b/kernel/entry/syscall_user_dispatch.c
index d89dffcc2d64..1c39ccd733f5 100644
--- a/kernel/entry/syscall_user_dispatch.c
+++ b/kernel/entry/syscall_user_dispatch.c
@@ -11,12 +11,15 @@
 #include <linux/uaccess.h>
 #include <linux/signal.h>
 #include <linux/elf.h>
+#include <linux/sysctl.h>
 
 #include <linux/sched/signal.h>
 #include <linux/sched/task_stack.h>
 
 #include <asm/syscall.h>
 
+static int syscall_user_dispatch_allowed __read_mostly = 1;
+
 static void trigger_sigsys(struct pt_regs *regs)
 {
 	struct kernel_siginfo info;
@@ -102,6 +105,10 @@ static int task_set_syscall_user_dispatch(struct task_struct *task, unsigned lon
 		return -EINVAL;
 	}
 
+	/* Arming can be denied at runtime via sysctl, disarming is allowed */
+	if (mode != PR_SYS_DISPATCH_OFF && !syscall_user_dispatch_allowed)
+		return -EPERM;
+
 	/*
 	 * access_ok() will clear memory tags for tagged addresses
 	 * if current has memory tagging enabled.
@@ -172,3 +179,24 @@ int syscall_user_dispatch_set_config(struct task_struct *task, unsigned long siz
 	return task_set_syscall_user_dispatch(task, cfg.mode, cfg.offset, cfg.len,
 					      (char __user *)(uintptr_t)cfg.selector);
 }
+
+#ifdef CONFIG_SYSCTL
+static const struct ctl_table syscall_user_dispatch_sysctls[] = {
+	{
+		.procname	= "syscall_user_dispatch",
+		.data		= &syscall_user_dispatch_allowed,
+		.maxlen		= sizeof(syscall_user_dispatch_allowed),
+		.mode		= 0644,
+		.proc_handler	= proc_dointvec_minmax,
+		.extra1		= SYSCTL_ZERO,
+		.extra2		= SYSCTL_ONE,
+	},
+};
+
+static int __init syscall_user_dispatch_sysctl_init(void)
+{
+	register_sysctl_init("kernel", syscall_user_dispatch_sysctls);
+	return 0;
+}
+late_initcall(syscall_user_dispatch_sysctl_init);
+#endif /* CONFIG_SYSCTL */
-- 
2.54.0


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

* Re: [PATCH v2 1/2] syscall_user_dispatch: Make it configurable in Kconfig
  2026-07-04  1:58 ` [PATCH v2 1/2] syscall_user_dispatch: Make it configurable in Kconfig Gregory Price
@ 2026-07-04 15:22   ` Matthew Wilcox
  2026-07-04 15:29     ` Gregory Price
  2026-07-05 21:49     ` Randy Dunlap
  2026-07-05 20:31   ` Thomas Gleixner
  1 sibling, 2 replies; 11+ messages in thread
From: Matthew Wilcox @ 2026-07-04 15:22 UTC (permalink / raw)
  To: Gregory Price
  Cc: linux-kernel, linux-doc, corbet, skhan, tglx, peterz, luto, akpm,
	feng.tang, pmladek, lance.yang, marc.herbert, kees, leitao,
	joel.granados, lirongqing, nathan, xur, lukas.bulwahn,
	ryan.roberts

On Fri, Jul 03, 2026 at 09:58:58PM -0400, Gregory Price wrote:
> +config SYSCALL_USER_DISPATCH
> +	bool "Syscall User Dispatch"
> +	depends on GENERIC_ENTRY
> +	default y
> +	help
> +	  Syscall User Dispatch lets a thread have its own system calls outside
> +          an allowed IP address range to be intercepted and redirected to a
> +          userspace signal handler.

I was very confused when I read this.  IP expands to Internet Protocol
long before it gets to Instruction Pointer in my brain.

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

* Re: [PATCH v2 1/2] syscall_user_dispatch: Make it configurable in Kconfig
  2026-07-04 15:22   ` Matthew Wilcox
@ 2026-07-04 15:29     ` Gregory Price
  2026-07-05 21:49     ` Randy Dunlap
  1 sibling, 0 replies; 11+ messages in thread
From: Gregory Price @ 2026-07-04 15:29 UTC (permalink / raw)
  To: Matthew Wilcox
  Cc: linux-kernel, linux-doc, corbet, skhan, tglx, peterz, luto, akpm,
	feng.tang, pmladek, lance.yang, marc.herbert, kees, leitao,
	joel.granados, lirongqing, nathan, xur, lukas.bulwahn,
	ryan.roberts

On Sat, Jul 04, 2026 at 04:22:20PM +0100, Matthew Wilcox wrote:
> On Fri, Jul 03, 2026 at 09:58:58PM -0400, Gregory Price wrote:
> > +config SYSCALL_USER_DISPATCH
> > +	bool "Syscall User Dispatch"
> > +	depends on GENERIC_ENTRY
> > +	default y
> > +	help
> > +	  Syscall User Dispatch lets a thread have its own system calls outside
> > +          an allowed IP address range to be intercepted and redirected to a
> > +          userspace signal handler.
> 
> I was very confused when I read this.  IP expands to Internet Protocol
> long before it gets to Instruction Pointer in my brain.

Hah, fair, i was just going with tglx's [1] explanation.

https://lore.kernel.org/all/87a4s8m69c.ffs@fw13/

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

* Re: [PATCH v2 1/2] syscall_user_dispatch: Make it configurable in Kconfig
  2026-07-04  1:58 ` [PATCH v2 1/2] syscall_user_dispatch: Make it configurable in Kconfig Gregory Price
  2026-07-04 15:22   ` Matthew Wilcox
@ 2026-07-05 20:31   ` Thomas Gleixner
  2026-07-06  0:10     ` Gregory Price
  1 sibling, 1 reply; 11+ messages in thread
From: Thomas Gleixner @ 2026-07-05 20:31 UTC (permalink / raw)
  To: Gregory Price, linux-kernel
  Cc: linux-doc, corbet, skhan, peterz, luto, akpm, feng.tang, pmladek,
	lance.yang, marc.herbert, kees, leitao, gourry, joel.granados,
	lirongqing, nathan, xur, lukas.bulwahn, ryan.roberts

On Fri, Jul 03 2026 at 21:58, Gregory Price wrote:

> Syscall User Dispatch is presently built under CONFIG_GENERIC_SYSCALL
> and cannot be disabled independently.
>
> Add CONFIG_SYSCALL_USER_DISPATCH to make it an optional feature.
>
> Signed-off-by: Gregory Price <gourry@gourry.net>
> ---
>  arch/Kconfig                                | 11 ++++++++
>  include/linux/entry-common.h                |  6 ++---
>  include/linux/syscall_user_dispatch.h       | 28 +++++++++++++++++++--
>  include/linux/syscall_user_dispatch_types.h |  2 +-
>  kernel/entry/Makefile                       |  3 ++-
>  5 files changed, 42 insertions(+), 8 deletions(-)
>
> diff --git a/arch/Kconfig b/arch/Kconfig
> index fa7507ac8e13..192b9d8abb5f 100644
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -114,6 +114,17 @@ config GENERIC_ENTRY
>  	select GENERIC_IRQ_ENTRY
>  	select GENERIC_SYSCALL
>  
> +config SYSCALL_USER_DISPATCH
> +	bool "Syscall User Dispatch"
> +	depends on GENERIC_ENTRY
> +	default y
> +	help
> +	  Syscall User Dispatch lets a thread have its own system calls outside
> +          an allowed IP address range to be intercepted and redirected to a
> +          userspace signal handler.

Space/TAB mismatch.

Also the mechanism allows to filter either outside an allowed range or
inside an allowed range depending on the mode which is handed to the PRCTL.

> +static inline bool syscall_user_dispatch(struct pt_regs *regs)

__always_inline for the very same reason. Sorry compilers _are_ silly.


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

* Re: [PATCH v2 2/2] syscall_user_dispatch: add kernel.syscall_user_dispatch sysctl
  2026-07-04  1:58 ` [PATCH v2 2/2] syscall_user_dispatch: add kernel.syscall_user_dispatch sysctl Gregory Price
@ 2026-07-05 20:35   ` Thomas Gleixner
  2026-07-06  0:07     ` Gregory Price
  0 siblings, 1 reply; 11+ messages in thread
From: Thomas Gleixner @ 2026-07-05 20:35 UTC (permalink / raw)
  To: Gregory Price, linux-kernel
  Cc: linux-doc, corbet, skhan, peterz, luto, akpm, feng.tang, pmladek,
	lance.yang, marc.herbert, kees, leitao, gourry, joel.granados,
	lirongqing, nathan, xur, lukas.bulwahn, ryan.roberts

On Fri, Jul 03 2026 at 21:58, Gregory Price wrote:
> --- a/kernel/entry/syscall_user_dispatch.c
> +++ b/kernel/entry/syscall_user_dispatch.c
> @@ -11,12 +11,15 @@
>  #include <linux/uaccess.h>
>  #include <linux/signal.h>
>  #include <linux/elf.h>
> +#include <linux/sysctl.h>

It's already not ordered correctly, but the rule is that we fix up the
include order to alphabetic ordering when we touch it.

>  #include <linux/sched/signal.h>
>  #include <linux/sched/task_stack.h>
>  
>  #include <asm/syscall.h>
>  
> +static int syscall_user_dispatch_allowed __read_mostly = 1;
> +
>  static void trigger_sigsys(struct pt_regs *regs)
>  {
>  	struct kernel_siginfo info;
> @@ -102,6 +105,10 @@ static int task_set_syscall_user_dispatch(struct task_struct *task, unsigned lon
>  		return -EINVAL;
>  	}
>  
> +	/* Arming can be denied at runtime via sysctl, disarming is allowed */
> +	if (mode != PR_SYS_DISPATCH_OFF && !syscall_user_dispatch_allowed)
> +		return -EPERM;
> +
>  	/*
>  	 * access_ok() will clear memory tags for tagged addresses
>  	 * if current has memory tagging enabled.
> @@ -172,3 +179,24 @@ int syscall_user_dispatch_set_config(struct task_struct *task, unsigned long siz
>  	return task_set_syscall_user_dispatch(task, cfg.mode, cfg.offset, cfg.len,
>  					      (char __user *)(uintptr_t)cfg.selector);
>  }
> +
> +#ifdef CONFIG_SYSCTL
> +static const struct ctl_table syscall_user_dispatch_sysctls[] = {
> +	{
> +		.procname	= "syscall_user_dispatch",
> +		.data		= &syscall_user_dispatch_allowed,
> +		.maxlen		= sizeof(syscall_user_dispatch_allowed),
> +		.mode		= 0644,
> +		.proc_handler	= proc_dointvec_minmax,

proc_dobool() exists for a reason.


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

* Re: [PATCH v2 1/2] syscall_user_dispatch: Make it configurable in Kconfig
  2026-07-04 15:22   ` Matthew Wilcox
  2026-07-04 15:29     ` Gregory Price
@ 2026-07-05 21:49     ` Randy Dunlap
  2026-07-06  0:11       ` Gregory Price
  1 sibling, 1 reply; 11+ messages in thread
From: Randy Dunlap @ 2026-07-05 21:49 UTC (permalink / raw)
  To: Matthew Wilcox, Gregory Price
  Cc: linux-kernel, linux-doc, corbet, skhan, tglx, peterz, luto, akpm,
	feng.tang, pmladek, lance.yang, marc.herbert, kees, leitao,
	joel.granados, lirongqing, nathan, xur, lukas.bulwahn,
	ryan.roberts

On July 4, 2026 8:22:20 AM PDT, Matthew Wilcox <willy@infradead.org> wrote:
>On Fri, Jul 03, 2026 at 09:58:58PM -0400, Gregory Price wrote:
>> +config SYSCALL_USER_DISPATCH
>> +	bool "Syscall User Dispatch"
>> +	depends on GENERIC_ENTRY
>> +	default y
>> +	help
>> +	  Syscall User Dispatch lets a thread have its own system calls outside
>> +          an allowed IP address range to be intercepted and redirected to a
>> +          userspace signal handler.
>
>I was very confused when I read this.  IP expands to Internet Protocol
>long before it gets to Instruction Pointer in my brain.
>

Ditto



~Randy

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

* Re: [PATCH v2 2/2] syscall_user_dispatch: add kernel.syscall_user_dispatch sysctl
  2026-07-05 20:35   ` Thomas Gleixner
@ 2026-07-06  0:07     ` Gregory Price
  0 siblings, 0 replies; 11+ messages in thread
From: Gregory Price @ 2026-07-06  0:07 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: linux-kernel, linux-doc, corbet, skhan, peterz, luto, akpm,
	feng.tang, pmladek, lance.yang, marc.herbert, kees, leitao,
	joel.granados, lirongqing, nathan, xur, lukas.bulwahn,
	ryan.roberts

On Sun, Jul 05, 2026 at 10:35:08PM +0200, Thomas Gleixner wrote:
> >  #include <linux/signal.h>
> >  #include <linux/elf.h>
> > +#include <linux/sysctl.h>
> 
> It's already not ordered correctly, but the rule is that we fix up the
> include order to alphabetic ordering when we touch it.
>

ack.

> > +#ifdef CONFIG_SYSCTL
> > +static const struct ctl_table syscall_user_dispatch_sysctls[] = {
> > +	{
> > +		.procname	= "syscall_user_dispatch",
> > +		.data		= &syscall_user_dispatch_allowed,
> > +		.maxlen		= sizeof(syscall_user_dispatch_allowed),
> > +		.mode		= 0644,
> > +		.proc_handler	= proc_dointvec_minmax,
> 
> proc_dobool() exists for a reason.

ack.

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

* Re: [PATCH v2 1/2] syscall_user_dispatch: Make it configurable in Kconfig
  2026-07-05 20:31   ` Thomas Gleixner
@ 2026-07-06  0:10     ` Gregory Price
  0 siblings, 0 replies; 11+ messages in thread
From: Gregory Price @ 2026-07-06  0:10 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: linux-kernel, linux-doc, corbet, skhan, peterz, luto, akpm,
	feng.tang, pmladek, lance.yang, marc.herbert, kees, leitao,
	joel.granados, lirongqing, nathan, xur, lukas.bulwahn,
	ryan.roberts

On Sun, Jul 05, 2026 at 10:31:51PM +0200, Thomas Gleixner wrote:
> On Fri, Jul 03 2026 at 21:58, Gregory Price wrote:
> > +	default y
> > +	help
> > +	  Syscall User Dispatch lets a thread have its own system calls outside
> > +          an allowed IP address range to be intercepted and redirected to a
> > +          userspace signal handler.
> 
> Space/TAB mismatch.
>

bleh switched dev environments and forgot checkpatch doesn't catch this

> Also the mechanism allows to filter either outside an allowed range or
> inside an allowed range depending on the mode which is handed to the PRCTL.
> 

hadn't noticed that feature actually got merged.

ack, will just go with the general language

> > +static inline bool syscall_user_dispatch(struct pt_regs *regs)
> 
> __always_inline for the very same reason. Sorry compilers _are_ silly.
> 

ack.

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

* Re: [PATCH v2 1/2] syscall_user_dispatch: Make it configurable in Kconfig
  2026-07-05 21:49     ` Randy Dunlap
@ 2026-07-06  0:11       ` Gregory Price
  0 siblings, 0 replies; 11+ messages in thread
From: Gregory Price @ 2026-07-06  0:11 UTC (permalink / raw)
  To: Randy Dunlap
  Cc: Matthew Wilcox, linux-kernel, linux-doc, corbet, skhan, tglx,
	peterz, luto, akpm, feng.tang, pmladek, lance.yang, marc.herbert,
	kees, leitao, joel.granados, lirongqing, nathan, xur,
	lukas.bulwahn, ryan.roberts

On Sun, Jul 05, 2026 at 02:49:56PM -0700, Randy Dunlap wrote:
> On July 4, 2026 8:22:20 AM PDT, Matthew Wilcox <willy@infradead.org> wrote:
> >On Fri, Jul 03, 2026 at 09:58:58PM -0400, Gregory Price wrote:
> >> +config SYSCALL_USER_DISPATCH
> >> +	bool "Syscall User Dispatch"
> >> +	depends on GENERIC_ENTRY
> >> +	default y
> >> +	help
> >> +	  Syscall User Dispatch lets a thread have its own system calls outside
> >> +          an allowed IP address range to be intercepted and redirected to a
> >> +          userspace signal handler.
> >
> >I was very confused when I read this.  IP expands to Internet Protocol
> >long before it gets to Instruction Pointer in my brain.
> >
> 
> Ditto
>

ack.

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

end of thread, other threads:[~2026-07-06  0:11 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-04  1:58 [PATCH v2 0/2] syscall_user_dispatch: add build/runtime configs Gregory Price
2026-07-04  1:58 ` [PATCH v2 1/2] syscall_user_dispatch: Make it configurable in Kconfig Gregory Price
2026-07-04 15:22   ` Matthew Wilcox
2026-07-04 15:29     ` Gregory Price
2026-07-05 21:49     ` Randy Dunlap
2026-07-06  0:11       ` Gregory Price
2026-07-05 20:31   ` Thomas Gleixner
2026-07-06  0:10     ` Gregory Price
2026-07-04  1:58 ` [PATCH v2 2/2] syscall_user_dispatch: add kernel.syscall_user_dispatch sysctl Gregory Price
2026-07-05 20:35   ` Thomas Gleixner
2026-07-06  0:07     ` Gregory Price

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox