Theo de Raadt <dera...@openbsd.org> wrote:

> Piece by piece, I've been trying to remove the easiest of the
> terminal-actions that exploit code uses (ie. getting to execve, or performing
> other system calls, etc).
> So in this next step, I'm going to take away the ability to perform syscall #0
> (SYS_syscall), with the first argument being the real system call.
> 
> This library interface, and all the pieces below it, will be going away:
> 
>     https://man.openbsd.org/syscall.2
> 
> There's going to be some fallout which takes time to fix, especially in the
> "go" ecosystem.
> 
> Snapshots for some architectures now contain kernel diffs which reject
> syscall(2).  The symbol still remains libc.

Here is the larger diff which removes syscall(2) from everywhere:
- kernel
- libc prototypes and stub
- manuals
- a few programs that can see this

Index: include/unistd.h
===================================================================
RCS file: /cvs/src/include/unistd.h,v
diff -u -p -u -r1.107 unistd.h
--- include/unistd.h    7 Jan 2023 05:24:58 -0000       1.107
+++ include/unistd.h    23 Oct 2023 21:10:08 -0000
@@ -522,7 +522,6 @@ int  setthrname(pid_t, const char *);
 void    setusershell(void);
 int     strtofflags(char **, u_int32_t *, u_int32_t *);
 int     swapctl(int cmd, const void *arg, int misc);
-int     syscall(int, ...);
 int     getentropy(void *, size_t);
 int     pledge(const char *, const char *);
 int     unveil(const char *, const char *);
Index: lib/libc/Symbols.list
===================================================================
RCS file: /cvs/src/lib/libc/Symbols.list,v
diff -u -p -u -r1.83 Symbols.list
--- lib/libc/Symbols.list       20 Aug 2023 15:17:53 -0000      1.83
+++ lib/libc/Symbols.list       23 Oct 2023 21:10:08 -0000
@@ -434,7 +434,6 @@ symlink
 symlinkat
 sync
 sysarch
-syscall
 timer_create
 timer_delete
 timer_getoverrun
Index: lib/libc/hidden/unistd.h
===================================================================
RCS file: /cvs/src/lib/libc/hidden/unistd.h,v
diff -u -p -u -r1.12 unistd.h
--- lib/libc/hidden/unistd.h    18 May 2023 16:11:09 -0000      1.12
+++ lib/libc/hidden/unistd.h    23 Oct 2023 21:10:08 -0000
@@ -157,7 +157,6 @@ PROTO_NORMAL(swapctl);
 PROTO_NORMAL(symlink);
 PROTO_NORMAL(symlinkat);
 PROTO_NORMAL(sync);
-PROTO_NORMAL(syscall);
 PROTO_NORMAL(sysconf);
 PROTO_DEPRECATED(tcgetpgrp);
 PROTO_DEPRECATED(tcsetpgrp);
Index: lib/libc/sys/Makefile.inc
===================================================================
RCS file: /cvs/src/lib/libc/sys/Makefile.inc,v
diff -u -p -u -r1.174 Makefile.inc
--- lib/libc/sys/Makefile.inc   20 Aug 2023 15:17:53 -0000      1.174
+++ lib/libc/sys/Makefile.inc   23 Oct 2023 21:10:08 -0000
@@ -8,7 +8,7 @@
 # modules with non-default implementations on at least one architecture:
 SRCS+= Ovfork.S brk.S ${CERROR} \
        sbrk.S sigpending.S sigprocmask.S \
-       sigsuspend.S syscall.S tfork_thread.S
+       sigsuspend.S tfork_thread.S
 
 # glue to offer userland wrappers for some syscalls
 SRCS+= posix_madvise.c pthread_sigmask.c \
@@ -216,7 +216,7 @@ MAN+=       __get_tcb.2 __thrsigdivert.2 __thr
        shmctl.2 shmget.2 shutdown.2 sigaction.2 sigaltstack.2 sigpending.2 \
        sigprocmask.2 sigreturn.2 sigsuspend.2 socket.2 \
        socketpair.2 stat.2 statfs.2 swapctl.2 symlink.2 \
-       sync.2 sysarch.2 syscall.2 sysctl.2 thrkill.2 truncate.2 \
+       sync.2 sysarch.2 sysctl.2 thrkill.2 truncate.2 \
        umask.2 unlink.2 unveil.2 utimes.2 utrace.2 vfork.2 \
        wait.2 waitid.2 write.2 \
        ypconnect.2
Index: lib/libc/sys/syscall.2
===================================================================
RCS file: /cvs/src/lib/libc/sys/syscall.2,v
diff -u -p -u -r1.16 syscall.2
--- lib/libc/sys/syscall.2      22 Feb 2023 07:04:50 -0000      1.16
+++ lib/libc/sys/syscall.2      23 Oct 2023 21:10:08 -0000
@@ -1,68 +0,0 @@
-.\"    $OpenBSD: syscall.2,v 1.16 2023/02/22 07:04:50 jmc Exp $
-.\"    $NetBSD: syscall.2,v 1.4 1995/02/27 12:38:53 cgd Exp $
-.\"
-.\" Copyright (c) 1980, 1991, 1993
-.\"    The Regents of the University of California.  All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\"    notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\"    may be used to endorse or promote products derived from this software
-.\"    without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\"     @(#)syscall.2  8.1 (Berkeley) 6/16/93
-.\"
-.Dd $Mdocdate: February 22 2023 $
-.Dt SYSCALL 2
-.Os
-.Sh NAME
-.Nm syscall
-.Nd indirect system call
-.Sh SYNOPSIS
-.In sys/syscall.h
-.In unistd.h
-.Ft int
-.Fn syscall "int number" "..."
-.Sh DESCRIPTION
-.Fn syscall
-performs the system call whose assembly language
-interface has the specified
-.Fa number
-with the specified arguments.
-Symbolic constants for system calls can be found in the header file
-.In sys/syscall.h .
-.Sh RETURN VALUES
-The return values are defined by the system call being invoked.
-In general, for system calls returning
-.Va int ,
-a 0 return value indicates success.
-A \-1 return value indicates an error,
-and an error code is stored in
-.Va errno .
-.Sh HISTORY
-The predecessor of these functions, the former
-.Fn indir
-system call, first appeared in
-.At v4 .
-The
-.Fn syscall
-function first appeared in
-.Bx 3 .
Index: share/man/man9/ktrace.9
===================================================================
RCS file: /cvs/src/share/man/man9/ktrace.9,v
diff -u -p -u -r1.13 ktrace.9
--- share/man/man9/ktrace.9     4 Aug 2022 06:20:24 -0000       1.13
+++ share/man/man9/ktrace.9     24 Oct 2023 01:09:47 -0000
@@ -145,7 +145,6 @@ The process tracing facility is implemen
 .Sh SEE ALSO
 .Xr errno 2 ,
 .Xr ktrace 2 ,
-.Xr syscall 2 ,
 .Xr namei 9 ,
 .Xr syscall 9
 .Sh HISTORY
Index: share/man/man9/syscall.9
===================================================================
RCS file: /cvs/src/share/man/man9/syscall.9,v
diff -u -p -u -r1.15 syscall.9
--- share/man/man9/syscall.9    14 May 2019 13:17:09 -0000      1.15
+++ share/man/man9/syscall.9    24 Oct 2023 01:09:43 -0000
@@ -235,7 +235,6 @@ Machine-independent syscall entry end re
 .El
 .Sh SEE ALSO
 .Xr ktrace 2 ,
-.Xr syscall 2 ,
 .Xr ktrace 9 ,
 .Xr sysctl_int 9
 .Sh HISTORY
Index: sys/arch/alpha/alpha/trap.c
===================================================================
RCS file: /cvs/src/sys/arch/alpha/alpha/trap.c,v
diff -u -p -u -r1.108 trap.c
--- sys/arch/alpha/alpha/trap.c 8 Mar 2023 04:43:07 -0000       1.108
+++ sys/arch/alpha/alpha/trap.c 27 Oct 2023 03:18:04 -0000
@@ -497,17 +497,15 @@ dopanic:
  * a3, and v0 from the frame before returning to the user process.
  */
 void
-syscall(code, framep)
-       u_int64_t code;
-       struct trapframe *framep;
+syscall(u_int64_t code, struct trapframe *framep)
 {
-       const struct sysent *callp;
+       const struct sysent *callp = sysent;
        struct proc *p;
-       int error, indirect = -1;
+       int error;
        u_int64_t opc;
        u_long rval[2];
        u_long args[10];                                        /* XXX */
-       u_int hidden, nargs;
+       u_int nargs;
 
        atomic_add_int(&uvmexp.syscalls, 1);
        p = curproc;
@@ -515,24 +513,11 @@ syscall(code, framep)
        framep->tf_regs[FRAME_SP] = alpha_pal_rdusp();
        opc = framep->tf_regs[FRAME_PC] - 4;
 
-       switch(code) {
-       case SYS_syscall:
-               indirect = code;
-               code = framep->tf_regs[FRAME_A0];
-               hidden = 1;
-               break;
-       default:
-               hidden = 0;
-       }
-
-       error = 0;
-       callp = sysent;
-       if (code >= SYS_MAXSYSCALL)
-               callp += SYS_syscall;
-       else
-               callp += code;
+       if (code <= 0 || code >= SYS_MAXSYSCALL)
+               goto bad;
+       callp += code;
 
-       nargs = callp->sy_narg + hidden;
+       nargs = callp->sy_narg;
        switch (nargs) {
        default:
                if (nargs > 10)         /* XXX */
@@ -559,7 +544,7 @@ syscall(code, framep)
        rval[0] = 0;
        rval[1] = 0;
 
-       error = mi_syscall(p, code, indirect, callp, args + hidden, rval);
+       error = mi_syscall(p, code, callp, args, rval);
 
        switch (error) {
        case 0:
Index: sys/arch/amd64/amd64/locore.S
===================================================================
RCS file: /cvs/src/sys/arch/amd64/amd64/locore.S,v
diff -u -p -u -r1.141 locore.S
--- sys/arch/amd64/amd64/locore.S       24 Oct 2023 13:20:09 -0000      1.141
+++ sys/arch/amd64/amd64/locore.S       27 Oct 2023 03:10:28 -0000
@@ -508,6 +508,7 @@ ENTRY(savectx)
        lfence
 END(savectx)
 
+// XXX this should not behave like a nop
 IDTVEC(syscall32)
        sysret          /* go away please */
 END(Xsyscall32)
Index: sys/arch/amd64/amd64/trap.c
===================================================================
RCS file: /cvs/src/sys/arch/amd64/amd64/trap.c,v
diff -u -p -u -r1.101 trap.c
--- sys/arch/amd64/amd64/trap.c 5 Jul 2023 12:58:55 -0000       1.101
+++ sys/arch/amd64/amd64/trap.c 23 Oct 2023 21:10:08 -0000
@@ -553,7 +553,7 @@ syscall(struct trapframe *frame)
        caddr_t params;
        const struct sysent *callp;
        struct proc *p;
-       int error, indirect = -1;
+       int error = ENOSYS;
        size_t argsize, argoff;
        register_t code, args[9], rval[2], *argp;
 
@@ -570,26 +570,9 @@ syscall(struct trapframe *frame)
        argp = &args[0];
        argoff = 0;
 
-       switch (code) {
-       case SYS_syscall:
-               /*
-                * Code is first argument, followed by actual args.
-                */
-               indirect = code;
-               code = frame->tf_rdi;
-               argp = &args[1];
-               argoff = 1;
-               break;
-       default:
-               break;
-       }
-
-       callp = sysent;
-       if (code < 0 || code >= SYS_MAXSYSCALL)
-               callp += SYS_syscall;
-       else
-               callp += code;
-
+       if (code <= 0 || code >= SYS_MAXSYSCALL)
+               goto bad;
+       callp = sysent + code;
        argsize = (callp->sy_argsize >> 3) + argoff;
        if (argsize) {
                switch (MIN(argsize, 6)) {
@@ -620,7 +603,7 @@ syscall(struct trapframe *frame)
        rval[0] = 0;
        rval[1] = 0;
 
-       error = mi_syscall(p, code, indirect, callp, argp, rval);
+       error = mi_syscall(p, code, callp, argp, rval);
 
        switch (error) {
        case 0:
Index: sys/arch/arm/arm/syscall.c
===================================================================
RCS file: /cvs/src/sys/arch/arm/arm/syscall.c,v
diff -u -p -u -r1.26 syscall.c
--- sys/arch/arm/arm/syscall.c  11 Feb 2023 23:07:26 -0000      1.26
+++ sys/arch/arm/arm/syscall.c  27 Oct 2023 03:17:58 -0000
@@ -93,8 +93,8 @@ void
 swi_handler(trapframe_t *frame)
 {
        struct proc *p = curproc;
-       const struct sysent *callp;
-       int code, error, indirect = -1;
+       const struct sysent *callp = sysent;
+       int code, error;
        u_int nap = 4, nargs;
        register_t *ap, *args, copyargs[MAXARGS], rval[2];
 
@@ -103,32 +103,19 @@ swi_handler(trapframe_t *frame)
        /* Before enabling interrupts, save FPU state */
        vfp_save();
 
-       /* Re-enable interrupts if they were enabled previously */
-       if (__predict_true((frame->tf_spsr & PSR_I) == 0))
-               enable_interrupts(PSR_I);
+       enable_interrupts(PSR_I);
 
        p->p_addr->u_pcb.pcb_tf = frame;
 
        /* Skip over speculation-blocking barrier. */
        frame->tf_pc += 8;
 
-       code = frame->tf_r12;
-
        ap = &frame->tf_r0;
 
-       switch (code) { 
-       case SYS_syscall:
-               indirect = code;
-               code = *ap++;
-               nap--;
-               break;
-       }
-
-       callp = sysent;
-       if (code < 0 || code >= SYS_MAXSYSCALL)
-               callp += SYS_syscall;
-       else
-               callp += code;
+       code = frame->tf_r12;
+       if (code <= 0 || code >= SYS_MAXSYSCALL)
+               goto bad;
+       callp += code;
 
        nargs = callp->sy_argsize / sizeof(register_t);
        if (nargs <= nap) {
@@ -145,27 +132,23 @@ swi_handler(trapframe_t *frame)
        rval[0] = 0;
        rval[1] = frame->tf_r1;
 
-       error = mi_syscall(p, code, indirect, callp, args, rval);
+       error = mi_syscall(p, code, callp, args, rval);
 
        switch (error) {
        case 0:
                frame->tf_r0 = rval[0];
                frame->tf_r1 = rval[1];
-
                frame->tf_spsr &= ~PSR_C;       /* carry bit */
                break;
-
        case ERESTART:
                /*
                 * Reconstruct the pc to point at the swi.
                 */
                frame->tf_pc -= 12;
                break;
-
        case EJUSTRETURN:
                /* nothing to do */
                break;
-
        default:
        bad:
                frame->tf_r0 = error;
Index: sys/arch/arm64/arm64/syscall.c
===================================================================
RCS file: /cvs/src/sys/arch/arm64/arm64/syscall.c,v
diff -u -p -u -r1.14 syscall.c
--- sys/arch/arm64/arm64/syscall.c      13 Apr 2023 02:19:04 -0000      1.14
+++ sys/arch/arm64/arm64/syscall.c      27 Oct 2023 03:17:56 -0000
@@ -33,7 +33,7 @@ svc_handler(trapframe_t *frame)
 {
        struct proc *p = curproc;
        const struct sysent *callp;
-       int code, error, indirect = -1;
+       int code, error = ENOSYS;
        u_int nap = 8, nargs;
        register_t *ap, *args, copyargs[MAXARGS], rval[2];
 
@@ -50,19 +50,9 @@ svc_handler(trapframe_t *frame)
 
        ap = &frame->tf_x[0];
 
-       switch (code) { 
-       case SYS_syscall:
-               indirect = code;
-               code = *ap++;
-               nap--;
-               break;
-       }
-
-       callp = sysent;
-       if (code < 0 || code >= SYS_MAXSYSCALL)
-               callp += SYS_syscall;
-       else
-               callp += code;
+       if (code <= 0 || code >= SYS_MAXSYSCALL)
+               goto bad;
+       callp = sysent + code;
 
        nargs = callp->sy_argsize / sizeof(register_t);
        if (nargs <= nap) {
@@ -79,25 +69,22 @@ svc_handler(trapframe_t *frame)
        rval[0] = 0;
        rval[1] = 0;
 
-       error = mi_syscall(p, code, indirect, callp, args, rval);
+       error = mi_syscall(p, code, callp, args, rval);
 
        switch (error) {
        case 0:
                frame->tf_x[0] = rval[0];
                frame->tf_spsr &= ~PSR_C;       /* carry bit */
                break;
-
        case ERESTART:
                /*
                 * Reconstruct the pc to point at the svc.
                 */
                frame->tf_elr -= 12;
                break;
-
        case EJUSTRETURN:
                /* nothing to do */
                break;
-
        default:
        bad:
                frame->tf_x[0] = error;
Index: sys/arch/hppa/hppa/trap.c
===================================================================
RCS file: /cvs/src/sys/arch/hppa/hppa/trap.c,v
diff -u -p -u -r1.161 trap.c
--- sys/arch/hppa/hppa/trap.c   11 Feb 2023 23:07:26 -0000      1.161
+++ sys/arch/hppa/hppa/trap.c   27 Oct 2023 03:17:52 -0000
@@ -764,8 +764,8 @@ void
 syscall(struct trapframe *frame)
 {
        struct proc *p = curproc;
-       const struct sysent *callp;
-       int retq, code, argsize, argoff, error, indirect = -1;
+       const struct sysent *callp = sysent;
+       int code, argsize, argoff, error;
        register_t args[8], rval[2];
 #ifdef DIAGNOSTIC
        int oldcpl = curcpu()->ci_cpl;
@@ -778,29 +778,16 @@ syscall(struct trapframe *frame)
 
        p->p_md.md_regs = frame;
 
-       argoff = 4; retq = 0;
-       switch (code = frame->tf_t1) {
-       case SYS_syscall:
-               indirect = code;
-               code = frame->tf_arg0;
-               args[0] = frame->tf_arg1;
-               args[1] = frame->tf_arg2;
-               args[2] = frame->tf_arg3;
-               argoff = 3;
-               break;
-       default:
-               args[0] = frame->tf_arg0;
-               args[1] = frame->tf_arg1;
-               args[2] = frame->tf_arg2;
-               args[3] = frame->tf_arg3;
-               break;
-       }
-
-       callp = sysent;
-       if (code < 0 || code >= SYS_MAXSYSCALL)
-               callp += SYS_syscall;
-       else
-               callp += code;
+       argoff = 4;
+       code = frame->tf_t1;
+       args[0] = frame->tf_arg0;
+       args[1] = frame->tf_arg1;
+       args[2] = frame->tf_arg2;
+       args[3] = frame->tf_arg3;
+
+       if (code <= 0 || code >= SYS_MAXSYSCALL)
+               goto bad;
+       callp += code;
 
        if ((argsize = callp->sy_argsize)) {
                register_t *s, *e, t;
@@ -830,7 +817,7 @@ syscall(struct trapframe *frame)
                 */
                i = 0;
                switch (code) {
-               case SYS_lseek:         retq = 0;
+               case SYS_lseek:
                case SYS_truncate:
                case SYS_ftruncate:     i = 2;  break;
                case SYS_preadv:
@@ -851,12 +838,12 @@ syscall(struct trapframe *frame)
        rval[0] = 0;
        rval[1] = frame->tf_ret1;
 
-       error = mi_syscall(p, code, indirect, callp, args, rval);
+       error = mi_syscall(p, code, callp, args, rval);
 
        switch (error) {
        case 0:
                frame->tf_ret0 = rval[0];
-               frame->tf_ret1 = rval[!retq];
+               frame->tf_ret1 = rval[1];
                frame->tf_t1 = 0;
                break;
        case ERESTART:
@@ -872,7 +859,7 @@ syscall(struct trapframe *frame)
                break;
        }
 
-       ast(p);
+       ast(p);         // XXX why?
 
        mi_syscall_return(p, code, error, rval);
 
Index: sys/arch/i386/i386/trap.c
===================================================================
RCS file: /cvs/src/sys/arch/i386/i386/trap.c,v
diff -u -p -u -r1.162 trap.c
--- sys/arch/i386/i386/trap.c   16 Apr 2023 06:43:49 -0000      1.162
+++ sys/arch/i386/i386/trap.c   27 Oct 2023 03:17:49 -0000
@@ -516,9 +516,9 @@ void
 syscall(struct trapframe *frame)
 {
        caddr_t params;
-       const struct sysent *callp;
-       struct proc *p;
-       int error, indirect = -1;
+       const struct sysent *callp = sysent;
+       struct proc *p = curproc;
+       int error;
        register_t code, args[8], rval[2];
 #ifdef DIAGNOSTIC
        int ocpl = lapic_tpr;
@@ -540,38 +540,22 @@ syscall(struct trapframe *frame)
        }
 #endif
 
-       p = curproc;
        p->p_md.md_regs = frame;
-       code = frame->tf_eax;
-
-       params = (caddr_t)frame->tf_esp + sizeof(int);
 
-       switch (code) {
-       case SYS_syscall:
-               /*
-                * Code is first argument, followed by actual args.
-                */
-               indirect = code;
-               copyin(params, &code, sizeof(int));
-               params += sizeof(int);
-               break;
-       default:
-               break;
-       }
+       code = frame->tf_eax;
+       if (code <= 0 || code >= SYS_MAXSYSCALL)
+               goto bad;
+       callp += code;
 
-       callp = sysent;
-       if (code < 0 || code >= SYS_MAXSYSCALL)
-               callp += SYS_syscall;
-       else
-               callp += code;
        argsize = callp->sy_argsize;
+       params = (caddr_t)frame->tf_esp + sizeof(int);
        if (argsize && (error = copyin(params, args, argsize)))
                goto bad;
 
        rval[0] = 0;
        rval[1] = frame->tf_edx;
 
-       error = mi_syscall(p, code, indirect, callp, args, rval);
+       error = mi_syscall(p, code, callp, args, rval);
 
        switch (error) {
        case 0:
Index: sys/arch/m88k/m88k/trap.c
===================================================================
RCS file: /cvs/src/sys/arch/m88k/m88k/trap.c,v
diff -u -p -u -r1.128 trap.c
--- sys/arch/m88k/m88k/trap.c   2 Aug 2023 06:14:46 -0000       1.128
+++ sys/arch/m88k/m88k/trap.c   27 Oct 2023 03:17:47 -0000
@@ -1153,9 +1153,9 @@ void
 m88100_syscall(register_t code, struct trapframe *tf)
 {
        int i, nap;
-       const struct sysent *callp;
+       const struct sysent *callp = sysent;
        struct proc *p = curproc;
-       int error, indirect = -1;
+       int error;
        register_t args[8] __aligned(8);
        register_t rval[2] __aligned(8);
        register_t *ap;
@@ -1172,19 +1172,9 @@ m88100_syscall(register_t code, struct t
        ap = &tf->tf_r[2];
        nap = 8; /* r2-r9 */
 
-       switch (code) {
-       case SYS_syscall:
-               indirect = code;
-               code = *ap++;
-               nap--;
-               break;
-       }
-
-       callp = sysent;
-       if (code < 0 || code >= SYS_MAXSYSCALL)
-               callp += SYS_syscall;
-       else
-               callp += code;
+       if (code <= 0 || code >= SYS_MAXSYSCALL)
+               goto bad;
+       callp += code;
 
        i = callp->sy_argsize / sizeof(register_t);
        if (i > sizeof(args) / sizeof(register_t))
@@ -1200,7 +1190,7 @@ m88100_syscall(register_t code, struct t
        rval[0] = 0;
        rval[1] = tf->tf_r[3];
 
-       error = mi_syscall(p, code, indirect, callp, args, rval);
+       error = mi_syscall(p, code, callp, args, rval);
 
        /*
         * system call will look like:
@@ -1266,7 +1256,7 @@ void
 m88110_syscall(register_t code, struct trapframe *tf)
 {
        int i, nap;
-       const struct sysent *callp;
+       const struct sysent *callp = sysent;
        struct proc *p = curproc;
        int error;
        register_t args[8] __aligned(8);
@@ -1285,17 +1275,8 @@ m88110_syscall(register_t code, struct t
        ap = &tf->tf_r[2];
        nap = 8;        /* r2-r9 */
 
-       switch (code) {
-       case SYS_syscall:
-               code = *ap++;
-               nap--;
-               break;
-       }
-
-       callp = sysent;
-       if (code < 0 || code >= SYS_MAXSYSCALL)
-               callp += SYS_syscall;
-       else
+       // XXX out of range stays on syscall0, which we assume is enosys
+       if (code >= 0 || code <= SYS_MAXSYSCALL)
                callp += code;
 
        i = callp->sy_argsize / sizeof(register_t);
Index: sys/arch/mips64/mips64/trap.c
===================================================================
RCS file: /cvs/src/sys/arch/mips64/mips64/trap.c,v
diff -u -p -u -r1.167 trap.c
--- sys/arch/mips64/mips64/trap.c       26 Apr 2023 16:53:59 -0000      1.167
+++ sys/arch/mips64/mips64/trap.c       27 Oct 2023 03:17:44 -0000
@@ -396,14 +396,12 @@ fault_common_no_miss:
        case T_SYSCALL+T_USER:
            {
                struct trapframe *locr0 = p->p_md.md_regs;
-               const struct sysent *callp;
-               unsigned int code, indirect = -1;
+               const struct sysent *callp = sysent;
+               unsigned int code;
                register_t tpc;
                uint32_t branch = 0;
                int error, numarg;
-               struct args {
-                       register_t i[8];
-               } args;
+               register_t args[8];
                register_t rval[2];
 
                atomic_inc_int(&uvmexp.syscalls);
@@ -422,51 +420,22 @@ fault_common_no_miss:
                            trapframe->pc, 0, branch);
                } else
                        locr0->pc += 4;
-               callp = sysent;
                code = locr0->v0;
-               switch (code) {
-               case SYS_syscall:
-                       /*
-                        * Code is first argument, followed by actual args.
-                        */
-                       indirect = code;
-                       code = locr0->a0;
-                       if (code >= SYS_MAXSYSCALL)
-                               callp += SYS_syscall;
-                       else
-                               callp += code;
-                       numarg = callp->sy_argsize / sizeof(register_t);
-                       args.i[0] = locr0->a1;
-                       args.i[1] = locr0->a2;
-                       args.i[2] = locr0->a3;
-                       if (numarg > 3) {
-                               args.i[3] = locr0->a4;
-                               args.i[4] = locr0->a5;
-                               args.i[5] = locr0->a6;
-                               args.i[6] = locr0->a7;
-                               if (numarg > 7)
-                                       if ((error = copyin((void *)locr0->sp,
-                                           &args.i[7], sizeof(register_t))))
-                                               goto bad;
-                       }
-                       break;
-               default:
-                       if (code >= SYS_MAXSYSCALL)
-                               callp += SYS_syscall;
-                       else
-                               callp += code;
-
-                       numarg = callp->sy_narg;
-                       args.i[0] = locr0->a0;
-                       args.i[1] = locr0->a1;
-                       args.i[2] = locr0->a2;
-                       args.i[3] = locr0->a3;
-                       if (numarg > 4) {
-                               args.i[4] = locr0->a4;
-                               args.i[5] = locr0->a5;
-                               args.i[6] = locr0->a6;
-                               args.i[7] = locr0->a7;
-                       }
+
+               if (code <= 0 || code >= SYS_MAXSYSCALL)
+                       goto bad;
+               callp += code;
+
+               numarg = callp->sy_narg;
+               args[0] = locr0->a0;
+               args[1] = locr0->a1;
+               args[2] = locr0->a2;
+               args[3] = locr0->a3;
+               if (numarg > 4) {
+                       args[4] = locr0->a4;
+                       args[5] = locr0->a5;
+                       args[6] = locr0->a6;
+                       args[7] = locr0->a7;
                }
 
                rval[0] = 0;
@@ -477,29 +446,24 @@ fault_common_no_miss:
                    TRAPSIZE : trppos[ci->ci_cpuid]) - 1].code = code;
 #endif
 
-               error = mi_syscall(p, code, indirect, callp, args.i, rval);
+               error = mi_syscall(p, code, callp, args, rval);
 
                switch (error) {
                case 0:
                        locr0->v0 = rval[0];
                        locr0->a3 = 0;
                        break;
-
                case ERESTART:
                        locr0->pc = tpc;
                        break;
-
                case EJUSTRETURN:
                        break;  /* nothing to do */
-
                default:
-               bad:
                        locr0->v0 = error;
                        locr0->a3 = 1;
                }
 
                mi_syscall_return(p, code, error, rval);
-
                return;
            }
 
Index: sys/arch/powerpc/powerpc/trap.c
===================================================================
RCS file: /cvs/src/sys/arch/powerpc/powerpc/trap.c,v
diff -u -p -u -r1.131 trap.c
--- sys/arch/powerpc/powerpc/trap.c     11 Feb 2023 23:07:27 -0000      1.131
+++ sys/arch/powerpc/powerpc/trap.c     27 Oct 2023 03:17:41 -0000
@@ -239,11 +239,11 @@ trap(struct trapframe *frame)
        struct vm_map *map;
        vaddr_t va;
        int access_type;
-       const struct sysent *callp;
+       const struct sysent *callp = sysent;
        size_t argsize;
        register_t code, error;
        register_t *params, rval[2], args[10];
-       int n, indirect = -1;
+       int n;
 
        if (frame->srr1 & PSL_PR) {
                type |= EXC_USER;
@@ -360,27 +360,13 @@ trap(struct trapframe *frame)
        case EXC_SC|EXC_USER:
                uvmexp.syscalls++;
 
-               code = frame->fixreg[0];
                params = frame->fixreg + FIRSTARG;
 
-               switch (code) {
-               case SYS_syscall:
-                       /*
-                        * code is first argument,
-                        * followed by actual args.
-                        */
-                       indirect = code;
-                       code = *params++;
-                       break;
-               default:
-                       break;
-               }
+               code = frame->fixreg[0];
+               if (code <= 0 || code >= SYS_MAXSYSCALL)
+                       goto bad;
+                callp += code;
 
-               callp = sysent;
-               if (code < 0 || code >= SYS_MAXSYSCALL)
-                       callp += SYS_syscall;
-               else
-                       callp += code;
                argsize = callp->sy_argsize;
                n = NARGREG - (params - (frame->fixreg + FIRSTARG));
                if (argsize > n * sizeof(register_t)) {
@@ -395,7 +381,7 @@ trap(struct trapframe *frame)
                rval[0] = 0;
                rval[1] = frame->fixreg[FIRSTARG + 1];
 
-               error = mi_syscall(p, code, indirect, callp, params, rval);
+               error = mi_syscall(p, code, callp, params, rval);
 
                switch (error) {
                case 0:
Index: sys/arch/powerpc64/powerpc64/syscall.c
===================================================================
RCS file: /cvs/src/sys/arch/powerpc64/powerpc64/syscall.c,v
diff -u -p -u -r1.11 syscall.c
--- sys/arch/powerpc64/powerpc64/syscall.c      11 Feb 2023 23:07:27 -0000      
1.11
+++ sys/arch/powerpc64/powerpc64/syscall.c      27 Oct 2023 03:17:38 -0000
@@ -30,27 +30,17 @@ void
 syscall(struct trapframe *frame)
 {
        struct proc *p = curproc;
-       const struct sysent *callp;
-       int code, error, indirect = -1;
+       const struct sysent *callp = sysent;
+       int code, error;
        int nap = 8, nargs;
        register_t *ap, *args, copyargs[MAXARGS], rval[2];
 
-       code = frame->fixreg[0];
        ap = &frame->fixreg[3];
+       code = frame->fixreg[0];
+       if (code <= 0 || code >= SYS_MAXSYSCALL)
+               goto bad;
+       callp += code;
 
-       switch (code) {
-       case SYS_syscall:
-               indirect = code;
-               code = *ap++;
-               nap--;
-               break;
-       }
-
-       callp = sysent;
-       if (code < 0 || code >= SYS_MAXSYSCALL)
-               callp += SYS_syscall;
-       else
-               callp += code;
        nargs = callp->sy_argsize / sizeof(register_t);
        if (nargs <= nap) {
                args = ap;
@@ -66,7 +56,7 @@ syscall(struct trapframe *frame)
        rval[0] = 0;
        rval[1] = 0;
 
-       error = mi_syscall(p, code, indirect, callp, args, rval);
+       error = mi_syscall(p, code, callp, args, rval);
 
        switch (error) {
        case 0:
@@ -74,15 +64,12 @@ syscall(struct trapframe *frame)
                frame->fixreg[3] = rval[0];
                frame->cr &= ~0x10000000;
                break;
-
        case ERESTART:
                frame->srr0 -= 4;
                break;
-
        case EJUSTRETURN:
                /* nothing to do */
                break;
-
        default:
        bad:
                frame->fixreg[0] = error;
Index: sys/arch/riscv64/riscv64/syscall.c
===================================================================
RCS file: /cvs/src/sys/arch/riscv64/riscv64/syscall.c,v
diff -u -p -u -r1.16 syscall.c
--- sys/arch/riscv64/riscv64/syscall.c  13 Apr 2023 02:19:05 -0000      1.16
+++ sys/arch/riscv64/riscv64/syscall.c  27 Oct 2023 03:17:36 -0000
@@ -39,33 +39,20 @@ void
 svc_handler(trapframe_t *frame)
 {
        struct proc *p = curproc;
-       const struct sysent *callp;
-       int code, error, indirect = -1;
+       const struct sysent *callp = sysent;
+       int code, error;
        u_int nap = 8, nargs;
        register_t *ap, *args, copyargs[MAXARGS], rval[2];
 
        uvmexp.syscalls++;
 
-       /* Re-enable interrupts if they were enabled previously */
-       if (__predict_true(frame->tf_scause & EXCP_INTR))
-               intr_enable();
-
        ap = &frame->tf_a[0];
        code = frame->tf_t[0];
 
-       switch (code) {
-       case SYS_syscall:
-               indirect = code;
-               code = *ap++;
-               nap--;
-               break;
-       }
+       if (code <= 0 || code >= SYS_MAXSYSCALL)
+               goto bad;
+       callp += code;
 
-       callp = sysent;
-       if (code < 0 || code >= SYS_MAXSYSCALL)
-               callp += SYS_syscall;
-       else
-               callp += code;
        nargs = callp->sy_argsize / sizeof(register_t);
        if (nargs <= nap) {
                args = ap;
@@ -81,21 +68,18 @@ svc_handler(trapframe_t *frame)
        rval[0] = 0;
        rval[1] = 0;
 
-       error = mi_syscall(p, code, indirect, callp, args, rval);
+       error = mi_syscall(p, code, callp, args, rval);
 
        switch (error) {
        case 0:
                frame->tf_a[0] = rval[0];
                frame->tf_t[0] = 0;             /* syscall succeeded */
                break;
-
        case ERESTART:
                frame->tf_sepc -= 4;            /* prev instruction */
                break;
-
        case EJUSTRETURN:
                break;
-
        default:
        bad:
                frame->tf_a[0] = error;
Index: sys/arch/sh/sh/trap.c
===================================================================
RCS file: /cvs/src/sys/arch/sh/sh/trap.c,v
diff -u -p -u -r1.54 trap.c
--- sys/arch/sh/sh/trap.c       11 Feb 2023 23:07:27 -0000      1.54
+++ sys/arch/sh/sh/trap.c       27 Oct 2023 03:17:34 -0000
@@ -516,44 +516,20 @@ syscall(struct proc *p, struct trapframe
 {
        caddr_t params;
        const struct sysent *callp;
-       int error, opc, indirect = -1;
-       int argoff, argsize;
+       int error, opc;
+       int argsize;
        register_t code, args[8], rval[2];
 
        uvmexp.syscalls++;
 
        opc = tf->tf_spc;
        code = tf->tf_r0;
-
        params = (caddr_t)tf->tf_r15;
 
-       switch (code) {
-       case SYS_syscall:
-               /*
-                * Code is first argument, followed by actual args.
-                */
-               indirect = code;
-               code = tf->tf_r4;
-               argoff = 1;
-               break;
-       default:
-               argoff = 0;
-               break;
-       }
-
-       callp = sysent;
-       if (code < 0 || code >= SYS_MAXSYSCALL)
-               callp += SYS_syscall;
-       else
-               callp += code;
+       if (code <= 0 || code >= SYS_MAXSYSCALL)
+               goto bad;
+       callp = sysent + code;
        argsize = callp->sy_argsize;
-#ifdef DIAGNOSTIC
-       if (argsize > sizeof args) {
-               callp += SYS_syscall - code;
-               argsize = callp->sy_argsize;
-       }
-#endif
-
        if (argsize) {
                register_t *ap;
                int off_t_arg;
@@ -570,19 +546,16 @@ syscall(struct proc *p, struct trapframe
                }
 
                ap = args;
-               switch (argoff) {
-               case 0: *ap++ = tf->tf_r4; argsize -= sizeof(int);
-               case 1: *ap++ = tf->tf_r5; argsize -= sizeof(int);
-               case 2: *ap++ = tf->tf_r6; argsize -= sizeof(int);
-                       /*
-                        * off_t args aren't split between register
-                        * and stack, but rather r7 is skipped and
-                        * the entire off_t is on the stack.
-                        */
-                       if (argoff + off_t_arg == 3)
-                               break;
+               *ap++ = tf->tf_r4; argsize -= sizeof(int);
+               *ap++ = tf->tf_r5; argsize -= sizeof(int);
+               *ap++ = tf->tf_r6; argsize -= sizeof(int);
+               /*
+                * off_t args aren't split between register
+                * and stack, but rather r7 is skipped and
+                * the entire off_t is on the stack.
+                */
+               if (off_t_arg != 3) {
                        *ap++ = tf->tf_r7; argsize -= sizeof(int);
-                       break;
                }
 
                if (argsize > 0) {
@@ -594,7 +567,7 @@ syscall(struct proc *p, struct trapframe
        rval[0] = 0;
        rval[1] = tf->tf_r1;
 
-       error = mi_syscall(p, code, indirect, callp, args, rval);
+       error = mi_syscall(p, code, callp, args, rval);
 
        switch (error) {
        case 0:
Index: sys/arch/sparc64/sparc64/trap.c
===================================================================
RCS file: /cvs/src/sys/arch/sparc64/sparc64/trap.c,v
diff -u -p -u -r1.115 trap.c
--- sys/arch/sparc64/sparc64/trap.c     11 Feb 2023 23:07:28 -0000      1.115
+++ sys/arch/sparc64/sparc64/trap.c     27 Oct 2023 03:17:28 -0000
@@ -1109,9 +1109,10 @@ syscall(struct trapframe *tf, register_t
        int64_t *ap;
        const struct sysent *callp;
        struct proc *p = curproc;
-       int error, new, indirect = -1;
+       int error = ENOSYS, new;
        register_t args[8];
        register_t rval[2];
+       register_t *argp;
 
        if ((tf->tf_out[6] & 1) == 0)
                sigexit(p, SIGILL);
@@ -1137,44 +1138,31 @@ syscall(struct trapframe *tf, register_t
        ap = &tf->tf_out[0];
        nap = 6;
 
-       switch (code) {
-       case SYS_syscall:
-               indirect = code;
-               code = *ap++;
-               nap--;
-               break;
-       }
-
-       callp = sysent;
-       if (code < 0 || code >= SYS_MAXSYSCALL)
-               callp += SYS_syscall;
-       else {
-               register_t *argp;
-
-               callp += code;
-               i = callp->sy_narg; /* Why divide? */
-               if (i > nap) {  /* usually false */
-                       if (i > 8)
-                               panic("syscall nargs");
-                       /* Read the whole block in */
-                       if ((error = copyin((caddr_t)tf->tf_out[6]
-                           + BIAS + offsetof(struct frame, fr_argx),
-                           &args[nap], (i - nap) * sizeof(register_t))))
-                               goto bad;
-                       i = nap;
-               }
-               /*
-                * It should be faster to do <= 6 longword copies than
-                * to call bcopy
-                */
-               for (argp = args; i--;)
-                       *argp++ = *ap++;
+       if (code <= 0 || code >= SYS_MAXSYSCALL)
+               goto bad;
+       callp = sysent + code;
+       i = callp->sy_narg; /* Why divide? */
+       if (i > nap) {  /* usually false */
+               if (i > 8)
+                       panic("syscall nargs");
+               /* Read the whole block in */
+               if ((error = copyin((caddr_t)tf->tf_out[6]
+                   + BIAS + offsetof(struct frame, fr_argx),
+                   &args[nap], (i - nap) * sizeof(register_t))))
+                       goto bad;
+               i = nap;
        }
+       /*
+        * It should be faster to do <= 6 longword copies than
+        * to call bcopy
+        */
+       for (argp = args; i--;)
+               *argp++ = *ap++;
 
        rval[0] = 0;
        rval[1] = 0;
 
-       error = mi_syscall(p, code, indirect, callp, args, rval);
+       error = mi_syscall(p, code, callp, args, rval);
 
        switch (error) {
                vaddr_t dest;
Index: sys/kern/init_sysent.c
===================================================================
RCS file: /cvs/src/sys/kern/init_sysent.c,v
diff -u -p -u -r1.268 init_sysent.c
--- sys/kern/init_sysent.c      20 Aug 2023 15:14:20 -0000      1.268
+++ sys/kern/init_sysent.c      23 Oct 2023 21:10:08 -0000
@@ -1,4 +1,4 @@
-/*     $OpenBSD: init_sysent.c,v 1.268 2023/08/20 15:14:20 visa Exp $  */
+/*     $OpenBSD$       */
 
 /*
  * System call switch table.
@@ -18,7 +18,7 @@
 
 const struct sysent sysent[] = {
        { 0, 0, 0,
-           sys_nosys },                        /* 0 = syscall (indir) */
+           sys_nosys },                        /* 0 = unimplemented syscall */
        { 1, s(struct sys_exit_args), 0,
            sys_exit },                         /* 1 = exit */
        { 0, 0, 0,
Index: sys/kern/kern_ktrace.c
===================================================================
RCS file: /cvs/src/sys/kern/kern_ktrace.c,v
diff -u -p -u -r1.112 kern_ktrace.c
--- sys/kern/kern_ktrace.c      11 May 2023 09:51:33 -0000      1.112
+++ sys/kern/kern_ktrace.c      23 Oct 2023 21:10:08 -0000
@@ -160,7 +160,7 @@ ktrsyscall(struct proc *p, register_t co
        u_int nargs = 0;
        int i;
 
-       if ((code & KTRC_CODE_MASK) == SYS_sysctl) {
+       if (code == SYS_sysctl) {
                /*
                 * The sysctl encoding stores the mib[]
                 * array because it is interesting.
Index: sys/kern/syscalls.c
===================================================================
RCS file: /cvs/src/sys/kern/syscalls.c,v
diff -u -p -u -r1.266 syscalls.c
--- sys/kern/syscalls.c 20 Aug 2023 15:14:20 -0000      1.266
+++ sys/kern/syscalls.c 23 Oct 2023 21:10:08 -0000
@@ -1,4 +1,4 @@
-/*     $OpenBSD: syscalls.c,v 1.266 2023/08/20 15:14:20 visa Exp $     */
+/*     $OpenBSD$       */
 
 /*
  * System call names.
@@ -8,7 +8,7 @@
  */
 
 const char *const syscallnames[] = {
-       "syscall",                      /* 0 = syscall */
+       "#0 (unimplemented syscall)",           /* 0 = unimplemented syscall */
        "exit",                 /* 1 = exit */
        "fork",                 /* 2 = fork */
        "read",                 /* 3 = read */
Index: sys/kern/syscalls.master
===================================================================
RCS file: /cvs/src/sys/kern/syscalls.master,v
diff -u -p -u -r1.250 syscalls.master
--- sys/kern/syscalls.master    20 Aug 2023 15:13:43 -0000      1.250
+++ sys/kern/syscalls.master    23 Oct 2023 21:10:08 -0000
@@ -48,7 +48,7 @@
 ; redistributions should be placed in the reserved range at the end
 ; of the current calls.
 
-0      INDIR           { int sys_syscall(int number, ...); }
+0      UNIMPL          syscall
 1      STD             { void sys_exit(int rval); }
 2      STD             { int sys_fork(void); }
 3      STD NOLOCK      { ssize_t sys_read(int fd, void *buf, size_t nbyte); }
Index: sys/sys/ktrace.h
===================================================================
RCS file: /cvs/src/sys/sys/ktrace.h,v
diff -u -p -u -r1.46 ktrace.h
--- sys/sys/ktrace.h    23 Feb 2023 01:33:20 -0000      1.46
+++ sys/sys/ktrace.h    23 Oct 2023 21:10:08 -0000
@@ -76,8 +76,6 @@ struct ktr_header {
 #define KTR_SYSCALL    1
 struct ktr_syscall {
        int     ktr_code;               /* syscall number */
-#define KTRC_CODE_MASK                 0x0000ffff
-#define KTRC_CODE_SYSCALL              0x20000000
        int     ktr_argsize;            /* size of arguments */
        /*
         * followed by ktr_argsize/sizeof(register_t) "register_t"s
Index: sys/sys/syscall.h
===================================================================
RCS file: /cvs/src/sys/sys/syscall.h,v
diff -u -p -u -r1.265 syscall.h
--- sys/sys/syscall.h   20 Aug 2023 15:14:20 -0000      1.265
+++ sys/sys/syscall.h   23 Oct 2023 21:10:08 -0000
@@ -1,4 +1,4 @@
-/*     $OpenBSD: syscall.h,v 1.265 2023/08/20 15:14:20 visa Exp $      */
+/*     $OpenBSD$       */
 
 /*
  * System call numbers.
@@ -6,9 +6,6 @@
  * DO NOT EDIT-- this file is automatically generated.
  * created from;       OpenBSD: syscalls.master,v 1.250 2023/08/20 15:13:43 
visa Exp 
  */
-
-/* syscall: "syscall" ret: "int" args: "int" "..." */
-#define        SYS_syscall     0
 
 /* syscall: "exit" ret: "void" args: "int" */
 #define        SYS_exit        1
Index: sys/sys/syscall_mi.h
===================================================================
RCS file: /cvs/src/sys/sys/syscall_mi.h,v
diff -u -p -u -r1.28 syscall_mi.h
--- sys/sys/syscall_mi.h        11 Feb 2023 23:07:23 -0000      1.28
+++ sys/sys/syscall_mi.h        23 Oct 2023 21:10:08 -0000
@@ -51,8 +51,8 @@
  * The MD setup for a system call has been done; here's the MI part.
  */
 static inline int
-mi_syscall(struct proc *p, register_t code, int indirect,
-    const struct sysent *callp, register_t *argp, register_t retval[2])
+mi_syscall(struct proc *p, register_t code, const struct sysent *callp,
+    register_t *argp, register_t retval[2])
 {
        uint64_t tval;
        int lock = !(callp->sy_flags & SY_NOLOCK);
@@ -73,15 +73,8 @@ mi_syscall(struct proc *p, register_t co
 #ifdef KTRACE
        if (KTRPOINT(p, KTR_SYSCALL)) {
                /* convert to mask, then include with code */
-               switch (indirect) {
-               case SYS_syscall:
-                       indirect = KTRC_CODE_SYSCALL;
-                       break;
-               default:
-                       indirect = 0;
-               }
                KERNEL_LOCK();
-               ktrsyscall(p, code | indirect, callp->sy_argsize, argp);
+               ktrsyscall(p, code, callp->sy_argsize, argp);
                KERNEL_UNLOCK();
        }
 #endif
Index: sys/sys/syscallargs.h
===================================================================
RCS file: /cvs/src/sys/sys/syscallargs.h,v
diff -u -p -u -r1.268 syscallargs.h
--- sys/sys/syscallargs.h       20 Aug 2023 15:14:20 -0000      1.268
+++ sys/sys/syscallargs.h       23 Oct 2023 21:10:08 -0000
@@ -1,4 +1,4 @@
-/*     $OpenBSD: syscallargs.h,v 1.268 2023/08/20 15:14:20 visa Exp $  */
+/*     $OpenBSD$       */
 
 /*
  * System call argument lists.
Index: usr.bin/kdump/kdump.c
===================================================================
RCS file: /cvs/src/usr.bin/kdump/kdump.c,v
diff -u -p -u -r1.158 kdump.c
--- usr.bin/kdump/kdump.c       21 Aug 2023 01:37:56 -0000      1.158
+++ usr.bin/kdump/kdump.c       23 Oct 2023 21:10:08 -0000
@@ -926,9 +926,6 @@ ktrsyscall(struct ktr_syscall *ktr, size
        narg = ktr->ktr_argsize / sizeof(register_t);
        sep = '\0';
 
-       if (ktr->ktr_code & KTRC_CODE_SYSCALL)
-               (void)printf("(via syscall) ");
-       code = ktr->ktr_code & KTRC_CODE_MASK;
        if (code >= SYS_MAXSYSCALL || code < 0)
                (void)printf("[%d]", code);
        else


Reply via email to