Module Name:    src
Committed By:   ad
Date:           Thu Oct  5 19:41:07 UTC 2023

Modified Files:
        src/sys/arch/aarch64/aarch64: aarch32_syscall.c syscall.c
        src/sys/arch/alpha/alpha: linux_syscall.c syscall.c trap.c
        src/sys/arch/amd64/amd64: linux32_syscall.c linux_syscall.c
            netbsd32_syscall.c trap.c
        src/sys/arch/amiga/amiga: trap.c
        src/sys/arch/arm/arm: syscall.c undefined.c
        src/sys/arch/arm/arm32: fault.c
        src/sys/arch/atari/atari: trap.c
        src/sys/arch/cesfic/cesfic: trap.c
        src/sys/arch/hp300/hp300: trap.c
        src/sys/arch/hppa/hppa: trap.c
        src/sys/arch/i386/i386: linux_syscall.c trap.c
        src/sys/arch/ia64/ia64: trap.c
        src/sys/arch/luna68k/luna68k: trap.c
        src/sys/arch/m68k/m68k: m68k_syscall.c
        src/sys/arch/mac68k/mac68k: trap.c
        src/sys/arch/mips/mips: syscall.c trap.c
        src/sys/arch/mvme68k/mvme68k: trap.c
        src/sys/arch/news68k/news68k: trap.c
        src/sys/arch/next68k/next68k: trap.c
        src/sys/arch/powerpc/ibm4xx: trap.c
        src/sys/arch/powerpc/powerpc: syscall.c trap.c
        src/sys/arch/riscv/riscv: syscall.c
        src/sys/arch/sh3/sh3: exception.c
        src/sys/arch/sparc/sparc: syscall.c trap.c
        src/sys/arch/sparc64/sparc64: syscall.c trap.c
        src/sys/arch/sun2/sun2: trap.c
        src/sys/arch/sun3/sun3: trap.c
        src/sys/arch/usermode/usermode: syscall.c
        src/sys/arch/vax/vax: syscall.c trap.c
        src/sys/arch/x68k/x68k: trap.c
        src/sys/arch/x86/x86: syscall.c
        src/sys/compat/freebsd: freebsd_syscall.c
        src/sys/kern: kern_lwp.c kern_proc.c
        src/sys/rump/librump/rumpkern: lwproc.c rump.c scheduler.c
        src/sys/sys: lwp.h

Log Message:
Arrange to update cached LWP credentials in userret() rather than during
syscall/trap entry, eliminating a test+branch on every syscall/trap.

This wasn't possible in the 3.99.x timeframe when l->l_cred came about
because there wasn't a reliable/timely way to force an ONPROC LWP running on
a remote CPU into the kernel (which is just about the only new thing in
this scheme).


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/aarch64/aarch64/aarch32_syscall.c
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/aarch64/aarch64/syscall.c
cvs rdiff -u -r1.33 -r1.34 src/sys/arch/alpha/alpha/linux_syscall.c
cvs rdiff -u -r1.44 -r1.45 src/sys/arch/alpha/alpha/syscall.c
cvs rdiff -u -r1.138 -r1.139 src/sys/arch/alpha/alpha/trap.c
cvs rdiff -u -r1.32 -r1.33 src/sys/arch/amd64/amd64/linux32_syscall.c \
    src/sys/arch/amd64/amd64/linux_syscall.c
cvs rdiff -u -r1.33 -r1.34 src/sys/arch/amd64/amd64/netbsd32_syscall.c
cvs rdiff -u -r1.128 -r1.129 src/sys/arch/amd64/amd64/trap.c
cvs rdiff -u -r1.139 -r1.140 src/sys/arch/amiga/amiga/trap.c
cvs rdiff -u -r1.68 -r1.69 src/sys/arch/arm/arm/syscall.c
cvs rdiff -u -r1.74 -r1.75 src/sys/arch/arm/arm/undefined.c
cvs rdiff -u -r1.116 -r1.117 src/sys/arch/arm/arm32/fault.c
cvs rdiff -u -r1.118 -r1.119 src/sys/arch/atari/atari/trap.c
cvs rdiff -u -r1.61 -r1.62 src/sys/arch/cesfic/cesfic/trap.c
cvs rdiff -u -r1.157 -r1.158 src/sys/arch/hp300/hp300/trap.c
cvs rdiff -u -r1.122 -r1.123 src/sys/arch/hppa/hppa/trap.c
cvs rdiff -u -r1.54 -r1.55 src/sys/arch/i386/i386/linux_syscall.c
cvs rdiff -u -r1.308 -r1.309 src/sys/arch/i386/i386/trap.c
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/ia64/ia64/trap.c
cvs rdiff -u -r1.77 -r1.78 src/sys/arch/luna68k/luna68k/trap.c
cvs rdiff -u -r1.54 -r1.55 src/sys/arch/m68k/m68k/m68k_syscall.c
cvs rdiff -u -r1.152 -r1.153 src/sys/arch/mac68k/mac68k/trap.c
cvs rdiff -u -r1.50 -r1.51 src/sys/arch/mips/mips/syscall.c
cvs rdiff -u -r1.263 -r1.264 src/sys/arch/mips/mips/trap.c
cvs rdiff -u -r1.113 -r1.114 src/sys/arch/mvme68k/mvme68k/trap.c
cvs rdiff -u -r1.75 -r1.76 src/sys/arch/news68k/news68k/trap.c
cvs rdiff -u -r1.93 -r1.94 src/sys/arch/next68k/next68k/trap.c
cvs rdiff -u -r1.101 -r1.102 src/sys/arch/powerpc/ibm4xx/trap.c
cvs rdiff -u -r1.57 -r1.58 src/sys/arch/powerpc/powerpc/syscall.c
cvs rdiff -u -r1.163 -r1.164 src/sys/arch/powerpc/powerpc/trap.c
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/riscv/riscv/syscall.c
cvs rdiff -u -r1.74 -r1.75 src/sys/arch/sh3/sh3/exception.c
cvs rdiff -u -r1.32 -r1.33 src/sys/arch/sparc/sparc/syscall.c
cvs rdiff -u -r1.200 -r1.201 src/sys/arch/sparc/sparc/trap.c
cvs rdiff -u -r1.48 -r1.49 src/sys/arch/sparc64/sparc64/syscall.c
cvs rdiff -u -r1.194 -r1.195 src/sys/arch/sparc64/sparc64/trap.c
cvs rdiff -u -r1.46 -r1.47 src/sys/arch/sun2/sun2/trap.c
cvs rdiff -u -r1.147 -r1.148 src/sys/arch/sun3/sun3/trap.c
cvs rdiff -u -r1.26 -r1.27 src/sys/arch/usermode/usermode/syscall.c
cvs rdiff -u -r1.26 -r1.27 src/sys/arch/vax/vax/syscall.c
cvs rdiff -u -r1.137 -r1.138 src/sys/arch/vax/vax/trap.c
cvs rdiff -u -r1.111 -r1.112 src/sys/arch/x68k/x68k/trap.c
cvs rdiff -u -r1.21 -r1.22 src/sys/arch/x86/x86/syscall.c
cvs rdiff -u -r1.6 -r1.7 src/sys/compat/freebsd/freebsd_syscall.c
cvs rdiff -u -r1.264 -r1.265 src/sys/kern/kern_lwp.c
cvs rdiff -u -r1.273 -r1.274 src/sys/kern/kern_proc.c
cvs rdiff -u -r1.56 -r1.57 src/sys/rump/librump/rumpkern/lwproc.c
cvs rdiff -u -r1.360 -r1.361 src/sys/rump/librump/rumpkern/rump.c
cvs rdiff -u -r1.54 -r1.55 src/sys/rump/librump/rumpkern/scheduler.c
cvs rdiff -u -r1.226 -r1.227 src/sys/sys/lwp.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/aarch64/aarch64/aarch32_syscall.c
diff -u src/sys/arch/aarch64/aarch64/aarch32_syscall.c:1.7 src/sys/arch/aarch64/aarch64/aarch32_syscall.c:1.8
--- src/sys/arch/aarch64/aarch64/aarch32_syscall.c:1.7	Sat Feb 25 00:40:22 2023
+++ src/sys/arch/aarch64/aarch64/aarch32_syscall.c	Thu Oct  5 19:41:03 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: aarch32_syscall.c,v 1.7 2023/02/25 00:40:22 riastradh Exp $	*/
+/*	$NetBSD: aarch32_syscall.c,v 1.8 2023/10/05 19:41:03 ad Exp $	*/
 
 /*
  * Copyright (c) 2018 Ryo Shimizu <r...@nerv.org>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: aarch32_syscall.c,v 1.7 2023/02/25 00:40:22 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: aarch32_syscall.c,v 1.8 2023/10/05 19:41:03 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/ktrace.h>
@@ -67,8 +67,6 @@ EMULNAME(syscall)(struct trapframe *tf)
 	int error, i;
 	bool do_trace, thumbmode;
 
-	LWP_CACHE_CREDS(l, p);
-
 	curcpu()->ci_data.cpu_nsyscall++; /* XXX unsafe curcpu() */
 
 	thumbmode = (tf->tf_spsr & SPSR_A32_T) ? true : false;

Index: src/sys/arch/aarch64/aarch64/syscall.c
diff -u src/sys/arch/aarch64/aarch64/syscall.c:1.12 src/sys/arch/aarch64/aarch64/syscall.c:1.13
--- src/sys/arch/aarch64/aarch64/syscall.c:1.12	Sat Feb 25 00:40:22 2023
+++ src/sys/arch/aarch64/aarch64/syscall.c	Thu Oct  5 19:41:03 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: syscall.c,v 1.12 2023/02/25 00:40:22 riastradh Exp $	*/
+/*	$NetBSD: syscall.c,v 1.13 2023/10/05 19:41:03 ad Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -58,7 +58,7 @@
 #define EMULNAME(x)	(x)
 #define EMULNAMEU(x)	(x)
 
-__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.12 2023/02/25 00:40:22 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.13 2023/10/05 19:41:03 ad Exp $");
 
 void
 cpu_spawn_return(struct lwp *l)
@@ -92,8 +92,6 @@ EMULNAME(syscall)(struct trapframe *tf)
 	register_t args[10];
 	int error;
 
-	LWP_CACHE_CREDS(l, p);
-
 	curcpu()->ci_data.cpu_nsyscall++; /* XXX unsafe curcpu() */
 
 	register_t *params = (void *)tf->tf_reg;

Index: src/sys/arch/alpha/alpha/linux_syscall.c
diff -u src/sys/arch/alpha/alpha/linux_syscall.c:1.33 src/sys/arch/alpha/alpha/linux_syscall.c:1.34
--- src/sys/arch/alpha/alpha/linux_syscall.c:1.33	Sat Mar  7 18:51:44 2015
+++ src/sys/arch/alpha/alpha/linux_syscall.c	Thu Oct  5 19:41:03 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: linux_syscall.c,v 1.33 2015/03/07 18:51:44 christos Exp $ */
+/* $NetBSD: linux_syscall.c,v 1.34 2023/10/05 19:41:03 ad Exp $ */
 
 /*-
  * Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -89,7 +89,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: linux_syscall.c,v 1.33 2015/03/07 18:51:44 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux_syscall.c,v 1.34 2023/10/05 19:41:03 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -147,8 +147,6 @@ linux_syscall_plain(struct lwp *l, uint6
 	u_int hidden, nargs;
 	struct proc *p = l->l_proc;
 
-	LWP_CACHE_CREDS(l, p);
-
 	curcpu()->ci_data.cpu_nsyscall++;
 	l->l_md.md_tf = framep;
 
@@ -231,8 +229,6 @@ linux_syscall_fancy(struct lwp *l, uint6
 	u_int hidden, nargs;
 	struct proc *p = l->l_proc;
 
-	LWP_CACHE_CREDS(l, p);
-
 	curcpu()->ci_data.cpu_nsyscall++;
 	l->l_md.md_tf = framep;
 

Index: src/sys/arch/alpha/alpha/syscall.c
diff -u src/sys/arch/alpha/alpha/syscall.c:1.44 src/sys/arch/alpha/alpha/syscall.c:1.45
--- src/sys/arch/alpha/alpha/syscall.c:1.44	Sat Apr  6 11:54:19 2019
+++ src/sys/arch/alpha/alpha/syscall.c	Thu Oct  5 19:41:03 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: syscall.c,v 1.44 2019/04/06 11:54:19 kamil Exp $ */
+/* $NetBSD: syscall.c,v 1.45 2023/10/05 19:41:03 ad Exp $ */
 
 /*-
  * Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -89,7 +89,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.44 2019/04/06 11:54:19 kamil Exp $");
+__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.45 2023/10/05 19:41:03 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -137,8 +137,6 @@ syscall(struct lwp *l, uint64_t code, st
 	u_int hidden, nargs;
 	struct proc * const p = l->l_proc;
 
-	LWP_CACHE_CREDS(l, p);
-
 	curcpu()->ci_data.cpu_nsyscall++;
 	l->l_md.md_tf = tf;
 

Index: src/sys/arch/alpha/alpha/trap.c
diff -u src/sys/arch/alpha/alpha/trap.c:1.138 src/sys/arch/alpha/alpha/trap.c:1.139
--- src/sys/arch/alpha/alpha/trap.c:1.138	Fri Jul 23 04:19:50 2021
+++ src/sys/arch/alpha/alpha/trap.c	Thu Oct  5 19:41:03 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.138 2021/07/23 04:19:50 thorpej Exp $ */
+/* $NetBSD: trap.c,v 1.139 2023/10/05 19:41:03 ad Exp $ */
 
 /*-
  * Copyright (c) 2000, 2001, 2021 The NetBSD Foundation, Inc.
@@ -95,7 +95,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.138 2021/07/23 04:19:50 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.139 2023/10/05 19:41:03 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -267,7 +267,6 @@ trap(const u_long a0, const u_long a1, c
 		l->l_md.md_tf = framep;
 		p = l->l_proc;
 		(void)memset(&ksi, 0, sizeof(ksi));
-		LWP_CACHE_CREDS(l, p);
 	} else {
 		p = NULL;
 	}

Index: src/sys/arch/amd64/amd64/linux32_syscall.c
diff -u src/sys/arch/amd64/amd64/linux32_syscall.c:1.32 src/sys/arch/amd64/amd64/linux32_syscall.c:1.33
--- src/sys/arch/amd64/amd64/linux32_syscall.c:1.32	Sat Mar  7 18:41:40 2015
+++ src/sys/arch/amd64/amd64/linux32_syscall.c	Thu Oct  5 19:41:03 2023
@@ -1,7 +1,7 @@
-/*	$NetBSD: linux32_syscall.c,v 1.32 2015/03/07 18:41:40 christos Exp $ */
+/*	$NetBSD: linux32_syscall.c,v 1.33 2023/10/05 19:41:03 ad Exp $ */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: linux32_syscall.c,v 1.32 2015/03/07 18:41:40 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux32_syscall.c,v 1.33 2023/10/05 19:41:03 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -45,8 +45,6 @@ linux32_syscall(struct trapframe *frame)
 
 	code = frame->tf_rax;
 
-	LWP_CACHE_CREDS(l, p);
-
 	callp = p->p_emul->e_sysent;
 
 	code &= (LINUX32_SYS_NSYSENT - 1);
Index: src/sys/arch/amd64/amd64/linux_syscall.c
diff -u src/sys/arch/amd64/amd64/linux_syscall.c:1.32 src/sys/arch/amd64/amd64/linux_syscall.c:1.33
--- src/sys/arch/amd64/amd64/linux_syscall.c:1.32	Sat Mar  7 18:41:40 2015
+++ src/sys/arch/amd64/amd64/linux_syscall.c	Thu Oct  5 19:41:03 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux_syscall.c,v 1.32 2015/03/07 18:41:40 christos Exp $ */
+/*	$NetBSD: linux_syscall.c,v 1.33 2023/10/05 19:41:03 ad Exp $ */
 
 /*-
  * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: linux_syscall.c,v 1.32 2015/03/07 18:41:40 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux_syscall.c,v 1.33 2023/10/05 19:41:03 ad Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_linux.h"
@@ -85,8 +85,6 @@ linux_syscall(struct trapframe *frame)
 
 	code = frame->tf_rax;
 
-	LWP_CACHE_CREDS(l, p);
-
 	callp = p->p_emul->e_sysent;
 
 	code &= (LINUX_SYS_NSYSENT - 1);

Index: src/sys/arch/amd64/amd64/netbsd32_syscall.c
diff -u src/sys/arch/amd64/amd64/netbsd32_syscall.c:1.33 src/sys/arch/amd64/amd64/netbsd32_syscall.c:1.34
--- src/sys/arch/amd64/amd64/netbsd32_syscall.c:1.33	Sat Mar  7 18:41:40 2015
+++ src/sys/arch/amd64/amd64/netbsd32_syscall.c	Thu Oct  5 19:41:03 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_syscall.c,v 1.33 2015/03/07 18:41:40 christos Exp $	*/
+/*	$NetBSD: netbsd32_syscall.c,v 1.34 2023/10/05 19:41:03 ad Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_syscall.c,v 1.33 2015/03/07 18:41:40 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_syscall.c,v 1.34 2023/10/05 19:41:03 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -79,8 +79,6 @@ netbsd32_syscall(struct trapframe *frame
 	code = frame->tf_rax & (SYS_NSYSENT - 1);
 	callp = p->p_emul->e_sysent + code;
 
-	LWP_CACHE_CREDS(l, p);
-
 	SYSCALL_COUNT(syscall_counts, code);
 	SYSCALL_TIME_SYS_ENTRY(l, syscall_times, code);
 

Index: src/sys/arch/amd64/amd64/trap.c
diff -u src/sys/arch/amd64/amd64/trap.c:1.128 src/sys/arch/amd64/amd64/trap.c:1.129
--- src/sys/arch/amd64/amd64/trap.c:1.128	Sat Sep  5 07:26:37 2020
+++ src/sys/arch/amd64/amd64/trap.c	Thu Oct  5 19:41:03 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.128 2020/09/05 07:26:37 maxv Exp $	*/
+/*	$NetBSD: trap.c,v 1.129 2023/10/05 19:41:03 ad Exp $	*/
 
 /*
  * Copyright (c) 1998, 2000, 2017 The NetBSD Foundation, Inc.
@@ -64,7 +64,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.128 2020/09/05 07:26:37 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.129 2023/10/05 19:41:03 ad Exp $");
 
 #include "opt_ddb.h"
 #include "opt_kgdb.h"
@@ -282,7 +282,6 @@ trap(struct trapframe *frame)
 	if (!KERNELMODE(frame->tf_cs)) {
 		type |= T_USER;
 		l->l_md.md_regs = frame;
-		LWP_CACHE_CREDS(l, p);
 	}
 
 #ifdef KDTRACE_HOOKS

Index: src/sys/arch/amiga/amiga/trap.c
diff -u src/sys/arch/amiga/amiga/trap.c:1.139 src/sys/arch/amiga/amiga/trap.c:1.140
--- src/sys/arch/amiga/amiga/trap.c:1.139	Mon Aug 10 10:51:21 2020
+++ src/sys/arch/amiga/amiga/trap.c	Thu Oct  5 19:41:03 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.139 2020/08/10 10:51:21 rin Exp $	*/
+/*	$NetBSD: trap.c,v 1.140 2023/10/05 19:41:03 ad Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -45,7 +45,7 @@
 #include "opt_m68k_arch.h"
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.139 2020/08/10 10:51:21 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.140 2023/10/05 19:41:03 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -522,7 +522,6 @@ trap(struct frame *fp, int type, u_int c
 		type |= T_USER;
 		sticks = p->p_sticks;
 		l->l_md.md_regs = fp->f_regs;
-		LWP_CACHE_CREDS(l, p);
 	}
 
 #ifdef DDB

Index: src/sys/arch/arm/arm/syscall.c
diff -u src/sys/arch/arm/arm/syscall.c:1.68 src/sys/arch/arm/arm/syscall.c:1.69
--- src/sys/arch/arm/arm/syscall.c:1.68	Mon Feb  1 19:31:34 2021
+++ src/sys/arch/arm/arm/syscall.c	Thu Oct  5 19:41:03 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: syscall.c,v 1.68 2021/02/01 19:31:34 skrll Exp $	*/
+/*	$NetBSD: syscall.c,v 1.69 2023/10/05 19:41:03 ad Exp $	*/
 
 /*-
  * Copyright (c) 2000, 2003 The NetBSD Foundation, Inc.
@@ -71,7 +71,7 @@
 
 #include <sys/param.h>
 
-__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.68 2021/02/01 19:31:34 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.69 2023/10/05 19:41:03 ad Exp $");
 
 #include <sys/cpu.h>
 #include <sys/device.h>
@@ -167,7 +167,6 @@ swi_handler(trapframe_t *tf)
 
 	curcpu()->ci_data.cpu_nsyscall++;
 
-	LWP_CACHE_CREDS(l, l->l_proc);
 	(*l->l_proc->p_md.md_syscall)(tf, l, insn);
 }
 

Index: src/sys/arch/arm/arm/undefined.c
diff -u src/sys/arch/arm/arm/undefined.c:1.74 src/sys/arch/arm/arm/undefined.c:1.75
--- src/sys/arch/arm/arm/undefined.c:1.74	Sat Jan  8 09:01:00 2022
+++ src/sys/arch/arm/arm/undefined.c	Thu Oct  5 19:41:03 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: undefined.c,v 1.74 2022/01/08 09:01:00 skrll Exp $	*/
+/*	$NetBSD: undefined.c,v 1.75 2023/10/05 19:41:03 ad Exp $	*/
 
 /*
  * Copyright (c) 2001 Ben Harris.
@@ -50,7 +50,7 @@
 #include "opt_kgdb.h"
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: undefined.c,v 1.74 2022/01/08 09:01:00 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: undefined.c,v 1.75 2023/10/05 19:41:03 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/cpu.h>
@@ -340,7 +340,6 @@ undefinedinstruction(trapframe_t *tf)
 
 	if ((tf->tf_spsr & PSR_MODE) == PSR_USR32_MODE) {
 		user = 1;
-		LWP_CACHE_CREDS(l, l->l_proc);
 	} else
 		user = 0;
 

Index: src/sys/arch/arm/arm32/fault.c
diff -u src/sys/arch/arm/arm32/fault.c:1.116 src/sys/arch/arm/arm32/fault.c:1.117
--- src/sys/arch/arm/arm32/fault.c:1.116	Mon Feb  1 19:31:34 2021
+++ src/sys/arch/arm/arm32/fault.c	Thu Oct  5 19:41:03 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: fault.c,v 1.116 2021/02/01 19:31:34 skrll Exp $	*/
+/*	$NetBSD: fault.c,v 1.117 2023/10/05 19:41:03 ad Exp $	*/
 
 /*
  * Copyright 2003 Wasabi Systems, Inc.
@@ -82,7 +82,7 @@
 #include "opt_multiprocessor.h"
 
 #include <sys/types.h>
-__KERNEL_RCSID(0, "$NetBSD: fault.c,v 1.116 2021/02/01 19:31:34 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fault.c,v 1.117 2023/10/05 19:41:03 ad Exp $");
 
 #include <sys/param.h>
 
@@ -268,8 +268,6 @@ data_abort_handler(trapframe_t *tf)
 
 	/* Data abort came from user mode? */
 	bool user = (TRAP_USERMODE(tf) != 0);
-	if (user)
-		LWP_CACHE_CREDS(l, l->l_proc);
 
 	/* Grab the current pcb */
 	struct pcb * const pcb = lwp_getpcb(l);
@@ -822,9 +820,6 @@ prefetch_abort_handler(trapframe_t *tf)
 	l = curlwp;
 	pcb = lwp_getpcb(l);
 
-	if ((user = TRAP_USERMODE(tf)) != 0)
-		LWP_CACHE_CREDS(l, l->l_proc);
-
 	/*
 	 * Enable IRQ's (disabled by the abort) This always comes
 	 * from user mode so we know interrupts were not disabled.

Index: src/sys/arch/atari/atari/trap.c
diff -u src/sys/arch/atari/atari/trap.c:1.118 src/sys/arch/atari/atari/trap.c:1.119
--- src/sys/arch/atari/atari/trap.c:1.118	Fri Jan  6 10:28:27 2023
+++ src/sys/arch/atari/atari/trap.c	Thu Oct  5 19:41:03 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.118 2023/01/06 10:28:27 tsutsui Exp $	*/
+/*	$NetBSD: trap.c,v 1.119 2023/10/05 19:41:03 ad Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.118 2023/01/06 10:28:27 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.119 2023/10/05 19:41:03 ad Exp $");
 
 #include "opt_ddb.h"
 #include "opt_execfmt.h"
@@ -345,7 +345,6 @@ trap(struct frame *fp, int type, u_int c
 		type |= T_USER;
 		sticks = p->p_sticks;
 		l->l_md.md_regs = fp->f_regs;
-		LWP_CACHE_CREDS(l, p);
 	}
 	switch (type) {
 	default:

Index: src/sys/arch/cesfic/cesfic/trap.c
diff -u src/sys/arch/cesfic/cesfic/trap.c:1.61 src/sys/arch/cesfic/cesfic/trap.c:1.62
--- src/sys/arch/cesfic/cesfic/trap.c:1.61	Sat Sep 25 19:16:31 2021
+++ src/sys/arch/cesfic/cesfic/trap.c	Thu Oct  5 19:41:04 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.61 2021/09/25 19:16:31 tsutsui Exp $	*/
+/*	$NetBSD: trap.c,v 1.62 2023/10/05 19:41:04 ad Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.61 2021/09/25 19:16:31 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.62 2023/10/05 19:41:04 ad Exp $");
 
 #include "opt_ddb.h"
 #include "opt_execfmt.h"
@@ -276,7 +276,6 @@ trap(struct frame *fp, int type, unsigne
 		type |= T_USER;
 		sticks = p->p_sticks;
 		l->l_md.md_regs = fp->f_regs;
-		LWP_CACHE_CREDS(l, p);
 	}
 	switch (type) {
 

Index: src/sys/arch/hp300/hp300/trap.c
diff -u src/sys/arch/hp300/hp300/trap.c:1.157 src/sys/arch/hp300/hp300/trap.c:1.158
--- src/sys/arch/hp300/hp300/trap.c:1.157	Fri Apr 21 23:01:59 2023
+++ src/sys/arch/hp300/hp300/trap.c	Thu Oct  5 19:41:04 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.157 2023/04/21 23:01:59 tsutsui Exp $	*/
+/*	$NetBSD: trap.c,v 1.158 2023/10/05 19:41:04 ad Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.157 2023/04/21 23:01:59 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.158 2023/10/05 19:41:04 ad Exp $");
 
 #include "opt_ddb.h"
 #include "opt_execfmt.h"
@@ -272,7 +272,6 @@ trap(struct frame *fp, int type, u_int c
 		type |= T_USER;
 		sticks = p->p_sticks;
 		l->l_md.md_regs = fp->f_regs;
-		LWP_CACHE_CREDS(l, p);
 	}
 	switch (type) {
 

Index: src/sys/arch/hppa/hppa/trap.c
diff -u src/sys/arch/hppa/hppa/trap.c:1.122 src/sys/arch/hppa/hppa/trap.c:1.123
--- src/sys/arch/hppa/hppa/trap.c:1.122	Sun Jul 23 10:09:36 2023
+++ src/sys/arch/hppa/hppa/trap.c	Thu Oct  5 19:41:04 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.122 2023/07/23 10:09:36 skrll Exp $	*/
+/*	$NetBSD: trap.c,v 1.123 2023/10/05 19:41:04 ad Exp $	*/
 
 /*-
  * Copyright (c) 2001, 2002 The NetBSD Foundation, Inc.
@@ -58,7 +58,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.122 2023/07/23 10:09:36 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.123 2023/10/05 19:41:04 ad Exp $");
 
 /* #define INTRDEBUG */
 /* #define TRAPDEBUG */
@@ -603,8 +603,6 @@ trap(int type, struct trapframe *frame)
 	KASSERT(curlwp != NULL);
 	l = curlwp;
 	p = l->l_proc;
-	if ((type & T_USER) != 0)
-		LWP_CACHE_CREDS(l, p);
 
 #ifdef DIAGNOSTIC
 	/*
@@ -1294,7 +1292,6 @@ syscall(struct trapframe *frame, int *ar
 	nsys = p->p_emul->e_nsysent;
 	callp = p->p_emul->e_sysent;
 	code = frame->tf_t1;
-	LWP_CACHE_CREDS(l, p);
 
 	/*
 	 * Restarting a system call is touchy on the HPPA, because syscall

Index: src/sys/arch/i386/i386/linux_syscall.c
diff -u src/sys/arch/i386/i386/linux_syscall.c:1.54 src/sys/arch/i386/i386/linux_syscall.c:1.55
--- src/sys/arch/i386/i386/linux_syscall.c:1.54	Fri Aug 10 21:44:58 2018
+++ src/sys/arch/i386/i386/linux_syscall.c	Thu Oct  5 19:41:04 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux_syscall.c,v 1.54 2018/08/10 21:44:58 pgoyette Exp $	*/
+/*	$NetBSD: linux_syscall.c,v 1.55 2023/10/05 19:41:04 ad Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: linux_syscall.c,v 1.54 2018/08/10 21:44:58 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux_syscall.c,v 1.55 2023/10/05 19:41:04 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -76,7 +76,6 @@ linux_syscall(struct trapframe *frame)
 	register_t code, args[6], rval[2];
 
 	l = curlwp;
-	LWP_CACHE_CREDS(l, l->l_proc);
 
 	code = frame->tf_eax & (LINUX_SYS_NSYSENT - 1);
 	callp = linux_sysent;

Index: src/sys/arch/i386/i386/trap.c
diff -u src/sys/arch/i386/i386/trap.c:1.308 src/sys/arch/i386/i386/trap.c:1.309
--- src/sys/arch/i386/i386/trap.c:1.308	Sat Aug 20 23:48:50 2022
+++ src/sys/arch/i386/i386/trap.c	Thu Oct  5 19:41:04 2023
@@ -1,5 +1,5 @@
 
-/*	$NetBSD: trap.c,v 1.308 2022/08/20 23:48:50 riastradh Exp $	*/
+/*	$NetBSD: trap.c,v 1.309 2023/10/05 19:41:04 ad Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2000, 2005, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -69,7 +69,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.308 2022/08/20 23:48:50 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.309 2023/10/05 19:41:04 ad Exp $");
 
 #include "opt_ddb.h"
 #include "opt_kgdb.h"
@@ -314,7 +314,6 @@ trap(struct trapframe *frame)
 		type |= T_USER;
 		l->l_md.md_regs = frame;
 		pcb->pcb_cr2 = 0;
-		LWP_CACHE_CREDS(l, p);
 	}
 
 #ifdef KDTRACE_HOOKS

Index: src/sys/arch/ia64/ia64/trap.c
diff -u src/sys/arch/ia64/ia64/trap.c:1.15 src/sys/arch/ia64/ia64/trap.c:1.16
--- src/sys/arch/ia64/ia64/trap.c:1.15	Sat Jul 24 21:31:33 2021
+++ src/sys/arch/ia64/ia64/trap.c	Thu Oct  5 19:41:04 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.15 2021/07/24 21:31:33 andvar Exp $ */
+/* $NetBSD: trap.c,v 1.16 2023/10/05 19:41:04 ad Exp $ */
 
 /*-
  * Copyright (c) 2005 Marcel Moolenaar
@@ -61,7 +61,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.15 2021/07/24 21:31:33 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.16 2023/10/05 19:41:04 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -397,7 +397,6 @@ trap(int vector, struct trapframe *tf)
 		ia64_set_fpsr(IA64_FPSR_DEFAULT);
 		p = l->l_proc;
 		l->l_md.md_tf = tf;
-		LWP_CACHE_CREDS(l, p);
 	} else {
 		p = NULL;
 	}

Index: src/sys/arch/luna68k/luna68k/trap.c
diff -u src/sys/arch/luna68k/luna68k/trap.c:1.77 src/sys/arch/luna68k/luna68k/trap.c:1.78
--- src/sys/arch/luna68k/luna68k/trap.c:1.77	Sun Sep 17 12:30:00 2023
+++ src/sys/arch/luna68k/luna68k/trap.c	Thu Oct  5 19:41:04 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.77 2023/09/17 12:30:00 andvar Exp $ */
+/* $NetBSD: trap.c,v 1.78 2023/10/05 19:41:04 ad Exp $ */
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.77 2023/09/17 12:30:00 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.78 2023/10/05 19:41:04 ad Exp $");
 
 #include "opt_ddb.h"
 #include "opt_kgdb.h"
@@ -242,7 +242,6 @@ trap(struct frame *fp, int type, unsigne
 		type |= T_USER;
 		sticks = p->p_sticks;
 		l->l_md.md_regs = fp->f_regs;
-		LWP_CACHE_CREDS(l, p);
 	}
 	switch (type) {
 

Index: src/sys/arch/m68k/m68k/m68k_syscall.c
diff -u src/sys/arch/m68k/m68k/m68k_syscall.c:1.54 src/sys/arch/m68k/m68k/m68k_syscall.c:1.55
--- src/sys/arch/m68k/m68k/m68k_syscall.c:1.54	Sat Apr  6 11:54:20 2019
+++ src/sys/arch/m68k/m68k/m68k_syscall.c	Thu Oct  5 19:41:04 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: m68k_syscall.c,v 1.54 2019/04/06 11:54:20 kamil Exp $	*/
+/*	$NetBSD: m68k_syscall.c,v 1.55 2023/10/05 19:41:04 ad Exp $	*/
 
 /*-
  * Portions Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -65,7 +65,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: m68k_syscall.c,v 1.54 2019/04/06 11:54:20 kamil Exp $");
+__KERNEL_RCSID(0, "$NetBSD: m68k_syscall.c,v 1.55 2023/10/05 19:41:04 ad Exp $");
 
 #include "opt_execfmt.h"
 #include "opt_compat_netbsd.h"
@@ -119,7 +119,6 @@ syscall(register_t code, struct frame fr
 	p = l->l_proc;
 	sticks = p->p_sticks;
 	l->l_md.md_regs = frame.f_regs;
-	LWP_CACHE_CREDS(l, p);
 
 	(p->p_md.md_syscall)(code, l, &frame);
 

Index: src/sys/arch/mac68k/mac68k/trap.c
diff -u src/sys/arch/mac68k/mac68k/trap.c:1.152 src/sys/arch/mac68k/mac68k/trap.c:1.153
--- src/sys/arch/mac68k/mac68k/trap.c:1.152	Sat Sep 25 19:16:31 2021
+++ src/sys/arch/mac68k/mac68k/trap.c	Thu Oct  5 19:41:04 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.152 2021/09/25 19:16:31 tsutsui Exp $	*/
+/*	$NetBSD: trap.c,v 1.153 2023/10/05 19:41:04 ad Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.152 2021/09/25 19:16:31 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.153 2023/10/05 19:41:04 ad Exp $");
 
 #include "opt_ddb.h"
 #include "opt_execfmt.h"
@@ -254,7 +254,6 @@ trap(struct frame *fp, int type, u_int c
 		type |= T_USER;
 		sticks = p->p_sticks;
 		l->l_md.md_regs = fp->f_regs;
-		LWP_CACHE_CREDS(l, p);
 	} else
 		sticks = 0;
 

Index: src/sys/arch/mips/mips/syscall.c
diff -u src/sys/arch/mips/mips/syscall.c:1.50 src/sys/arch/mips/mips/syscall.c:1.51
--- src/sys/arch/mips/mips/syscall.c:1.50	Sun Aug  9 06:43:29 2020
+++ src/sys/arch/mips/mips/syscall.c	Thu Oct  5 19:41:04 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: syscall.c,v 1.50 2020/08/09 06:43:29 skrll Exp $	*/
+/*	$NetBSD: syscall.c,v 1.51 2023/10/05 19:41:04 ad Exp $	*/
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -68,7 +68,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.50 2020/08/09 06:43:29 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.51 2023/10/05 19:41:04 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/cpu.h>
@@ -138,8 +138,6 @@ EMULNAME(syscall)(struct lwp *l, u_int s
 	size_t i;
 #endif
 
-	LWP_CACHE_CREDS(l, p);
-
 	curcpu()->ci_data.cpu_nsyscall++;
 
 	if (cause & MIPS_CR_BR_DELAY)

Index: src/sys/arch/mips/mips/trap.c
diff -u src/sys/arch/mips/mips/trap.c:1.263 src/sys/arch/mips/mips/trap.c:1.264
--- src/sys/arch/mips/mips/trap.c:1.263	Thu Sep 14 03:24:07 2023
+++ src/sys/arch/mips/mips/trap.c	Thu Oct  5 19:41:04 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.263 2023/09/14 03:24:07 rin Exp $	*/
+/*	$NetBSD: trap.c,v 1.264 2023/10/05 19:41:04 ad Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.263 2023/09/14 03:24:07 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.264 2023/10/05 19:41:04 ad Exp $");
 
 #include "opt_cputype.h"	/* which mips CPU levels do we support? */
 #include "opt_ddb.h"
@@ -194,7 +194,6 @@ trap(uint32_t status, uint32_t cause, va
 	if (USERMODE(status)) {
 		tf = utf;
 		type |= T_USER;
-		LWP_CACHE_CREDS(l, p);
 	}
 
 #ifdef KDTRACE_HOOKS

Index: src/sys/arch/mvme68k/mvme68k/trap.c
diff -u src/sys/arch/mvme68k/mvme68k/trap.c:1.113 src/sys/arch/mvme68k/mvme68k/trap.c:1.114
--- src/sys/arch/mvme68k/mvme68k/trap.c:1.113	Sat Sep 30 21:00:43 2023
+++ src/sys/arch/mvme68k/mvme68k/trap.c	Thu Oct  5 19:41:05 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.113 2023/09/30 21:00:43 andvar Exp $	*/
+/*	$NetBSD: trap.c,v 1.114 2023/10/05 19:41:05 ad Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.113 2023/09/30 21:00:43 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.114 2023/10/05 19:41:05 ad Exp $");
 
 #include "opt_ddb.h"
 #include "opt_execfmt.h"
@@ -296,7 +296,6 @@ trap(struct frame *fp, int type, unsigne
 		type |= T_USER;
 		sticks = p->p_sticks;
 		l->l_md.md_regs = fp->f_regs;
-		LWP_CACHE_CREDS(l, p);
 	}
 	switch (type) {
 

Index: src/sys/arch/news68k/news68k/trap.c
diff -u src/sys/arch/news68k/news68k/trap.c:1.75 src/sys/arch/news68k/news68k/trap.c:1.76
--- src/sys/arch/news68k/news68k/trap.c:1.75	Sun Oct  1 19:28:36 2023
+++ src/sys/arch/news68k/news68k/trap.c	Thu Oct  5 19:41:05 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.75 2023/10/01 19:28:36 andvar Exp $	*/
+/*	$NetBSD: trap.c,v 1.76 2023/10/05 19:41:05 ad Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.75 2023/10/01 19:28:36 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.76 2023/10/05 19:41:05 ad Exp $");
 
 #include "opt_ddb.h"
 #include "opt_execfmt.h"
@@ -265,7 +265,6 @@ trap(struct frame *fp, int type, u_int c
 		type |= T_USER;
 		sticks = p->p_sticks;
 		l->l_md.md_regs = fp->f_regs;
-		LWP_CACHE_CREDS(l, p);
 	}
 	switch (type) {
 

Index: src/sys/arch/next68k/next68k/trap.c
diff -u src/sys/arch/next68k/next68k/trap.c:1.93 src/sys/arch/next68k/next68k/trap.c:1.94
--- src/sys/arch/next68k/next68k/trap.c:1.93	Fri Feb  3 23:13:01 2023
+++ src/sys/arch/next68k/next68k/trap.c	Thu Oct  5 19:41:05 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.93 2023/02/03 23:13:01 tsutsui Exp $	*/
+/*	$NetBSD: trap.c,v 1.94 2023/10/05 19:41:05 ad Exp $	*/
 
 /*
  * This file was taken from mvme68k/mvme68k/trap.c
@@ -46,7 +46,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.93 2023/02/03 23:13:01 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.94 2023/10/05 19:41:05 ad Exp $");
 
 #include "opt_ddb.h"
 #include "opt_execfmt.h"
@@ -282,7 +282,6 @@ trap(struct frame *fp, int type, unsigne
 		type |= T_USER;
 		sticks = p->p_sticks;
 		l->l_md.md_regs = fp->f_regs;
-		LWP_CACHE_CREDS(l, p);
 	}
 	switch (type) {
 

Index: src/sys/arch/powerpc/ibm4xx/trap.c
diff -u src/sys/arch/powerpc/ibm4xx/trap.c:1.101 src/sys/arch/powerpc/ibm4xx/trap.c:1.102
--- src/sys/arch/powerpc/ibm4xx/trap.c:1.101	Wed Oct  5 08:18:00 2022
+++ src/sys/arch/powerpc/ibm4xx/trap.c	Thu Oct  5 19:41:05 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.101 2022/10/05 08:18:00 rin Exp $	*/
+/*	$NetBSD: trap.c,v 1.102 2023/10/05 19:41:05 ad Exp $	*/
 
 /*
  * Copyright 2001 Wasabi Systems, Inc.
@@ -69,7 +69,7 @@
 #define	__UFETCHSTORE_PRIVATE
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.101 2022/10/05 08:18:00 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.102 2023/10/05 19:41:05 ad Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_ddb.h"
@@ -150,7 +150,6 @@ trap(struct trapframe *tf)
 	KASSERT(l->l_stat == LSONPROC);
 
 	if (tf->tf_srr1 & PSL_PR) {
-		LWP_CACHE_CREDS(l, p);
 		type |= EXC_USER;
 	}
 

Index: src/sys/arch/powerpc/powerpc/syscall.c
diff -u src/sys/arch/powerpc/powerpc/syscall.c:1.57 src/sys/arch/powerpc/powerpc/syscall.c:1.58
--- src/sys/arch/powerpc/powerpc/syscall.c:1.57	Mon Jul  6 11:07:39 2020
+++ src/sys/arch/powerpc/powerpc/syscall.c	Thu Oct  5 19:41:05 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: syscall.c,v 1.57 2020/07/06 11:07:39 rin Exp $	*/
+/*	$NetBSD: syscall.c,v 1.58 2023/10/05 19:41:05 ad Exp $	*/
 
 /*
  * Copyright (C) 2002 Matt Thomas
@@ -59,7 +59,7 @@
 #define EMULNAME(x)	(x)
 #define EMULNAMEU(x)	(x)
 
-__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.57 2020/07/06 11:07:39 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.58 2023/10/05 19:41:05 ad Exp $");
 
 void
 md_child_return(struct lwp *l)
@@ -91,8 +91,6 @@ EMULNAME(syscall)(struct trapframe *tf)
 	int error;
 	int n;
 
-	LWP_CACHE_CREDS(l, p);
-
 	curcpu()->ci_ev_scalls.ev_count++;
 
 	code = tf->tf_fixreg[0];

Index: src/sys/arch/powerpc/powerpc/trap.c
diff -u src/sys/arch/powerpc/powerpc/trap.c:1.163 src/sys/arch/powerpc/powerpc/trap.c:1.164
--- src/sys/arch/powerpc/powerpc/trap.c:1.163	Wed Jul 15 08:58:52 2020
+++ src/sys/arch/powerpc/powerpc/trap.c	Thu Oct  5 19:41:05 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.163 2020/07/15 08:58:52 rin Exp $	*/
+/*	$NetBSD: trap.c,v 1.164 2023/10/05 19:41:05 ad Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -35,7 +35,7 @@
 #define	__UCAS_PRIVATE
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.163 2020/07/15 08:58:52 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.164 2023/10/05 19:41:05 ad Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_altivec.h"
@@ -111,7 +111,6 @@ trap(struct trapframe *tf)
 			panic("trap: user trap %d with lwp = %p, proc = %p",
 			    type, l, p);
 #endif
-		LWP_CACHE_CREDS(l, p);
 	}
 
 	ci->ci_data.cpu_ntrap++;

Index: src/sys/arch/riscv/riscv/syscall.c
diff -u src/sys/arch/riscv/riscv/syscall.c:1.4 src/sys/arch/riscv/riscv/syscall.c:1.5
--- src/sys/arch/riscv/riscv/syscall.c:1.4	Sun May  7 12:41:49 2023
+++ src/sys/arch/riscv/riscv/syscall.c	Thu Oct  5 19:41:05 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: syscall.c,v 1.4 2023/05/07 12:41:49 skrll Exp $	*/
+/*	$NetBSD: syscall.c,v 1.5 2023/10/05 19:41:05 ad Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.4 2023/05/07 12:41:49 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.5 2023/10/05 19:41:05 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/cpu.h>
@@ -88,8 +88,6 @@ EMULNAME(syscall)(struct trapframe *tf)
 	register_t copyargs[EMULNAME(SYS_MAXSYSARGS)];
 #endif
 
-	LWP_CACHE_CREDS(l, p);
-
 	curcpu()->ci_data.cpu_nsyscall++;
 
 	callp = p->p_emul->e_sysent;

Index: src/sys/arch/sh3/sh3/exception.c
diff -u src/sys/arch/sh3/sh3/exception.c:1.74 src/sys/arch/sh3/sh3/exception.c:1.75
--- src/sys/arch/sh3/sh3/exception.c:1.74	Wed Sep 15 11:03:24 2021
+++ src/sys/arch/sh3/sh3/exception.c	Thu Oct  5 19:41:05 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: exception.c,v 1.74 2021/09/15 11:03:24 rin Exp $	*/
+/*	$NetBSD: exception.c,v 1.75 2023/10/05 19:41:05 ad Exp $	*/
 
 /*-
  * Copyright (c) 2002, 2019 The NetBSD Foundation, Inc. All rights reserved.
@@ -79,7 +79,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: exception.c,v 1.74 2021/09/15 11:03:24 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: exception.c,v 1.75 2023/10/05 19:41:05 ad Exp $");
 
 #include "opt_ddb.h"
 #include "opt_kgdb.h"
@@ -165,7 +165,6 @@ general_exception(struct lwp *l, struct 
 	if (usermode) {
 		KDASSERT(l->l_md.md_regs == tf); /* check exception depth */
 		expevt |= EXP_USER;
-		LWP_CACHE_CREDS(l, l->l_proc);
 	}
 
 	switch (expevt) {
@@ -329,7 +328,6 @@ tlb_exception(struct lwp *l, struct trap
 			ksi.ksi_code = SEGV_ACCERR;
 			ksi.ksi_addr = (void *)va;
 			splx(tf->tf_ssr & PSL_IMASK);
-			LWP_CACHE_CREDS(l, l->l_proc);
 			goto user_fault;
 		} else {
 			TLB_ASSERT(l && onfault != NULL,
@@ -377,8 +375,6 @@ tlb_exception(struct lwp *l, struct trap
 
 	/* Page not found. call fault handler */
 	splx(tf->tf_ssr & PSL_IMASK);
-	if (usermode)
-		LWP_CACHE_CREDS(l, l->l_proc);
 	pcb->pcb_onfault = NULL;
 	err = uvm_fault(map, va, ftype);
 	pcb->pcb_onfault = onfault;

Index: src/sys/arch/sparc/sparc/syscall.c
diff -u src/sys/arch/sparc/sparc/syscall.c:1.32 src/sys/arch/sparc/sparc/syscall.c:1.33
--- src/sys/arch/sparc/sparc/syscall.c:1.32	Mon Mar 20 11:19:29 2023
+++ src/sys/arch/sparc/sparc/syscall.c	Thu Oct  5 19:41:05 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: syscall.c,v 1.32 2023/03/20 11:19:29 hannken Exp $ */
+/*	$NetBSD: syscall.c,v 1.33 2023/10/05 19:41:05 ad Exp $ */
 
 /*
  * Copyright (c) 1996
@@ -49,7 +49,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.32 2023/03/20 11:19:29 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.33 2023/10/05 19:41:05 ad Exp $");
 
 #include "opt_sparc_arch.h"
 #include "opt_multiprocessor.h"
@@ -224,7 +224,6 @@ syscall(register_t code, struct trapfram
 	curcpu()->ci_data.cpu_nsyscall++;	/* XXXSMP */
 	l = curlwp;
 	p = l->l_proc;
-	LWP_CACHE_CREDS(l, p);
 
 	sticks = p->p_sticks;
 	l->l_md.md_tf = tf;

Index: src/sys/arch/sparc/sparc/trap.c
diff -u src/sys/arch/sparc/sparc/trap.c:1.200 src/sys/arch/sparc/sparc/trap.c:1.201
--- src/sys/arch/sparc/sparc/trap.c:1.200	Sun Jan 24 07:36:54 2021
+++ src/sys/arch/sparc/sparc/trap.c	Thu Oct  5 19:41:05 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.200 2021/01/24 07:36:54 mrg Exp $ */
+/*	$NetBSD: trap.c,v 1.201 2023/10/05 19:41:05 ad Exp $ */
 
 /*
  * Copyright (c) 1996
@@ -49,7 +49,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.200 2021/01/24 07:36:54 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.201 2023/10/05 19:41:05 ad Exp $");
 
 #include "opt_ddb.h"
 #include "opt_compat_sunos.h"
@@ -307,7 +307,6 @@ trap(unsigned type, int psr, int pc, str
 	if ((l = curlwp) == NULL)
 		l = &lwp0;
 	p = l->l_proc;
-	LWP_CACHE_CREDS(l, p);
 	sticks = p->p_sticks;
 	pcb = lwp_getpcb(l);
 	l->l_md.md_tf = tf;	/* for ptrace/signals */
@@ -779,7 +778,6 @@ mem_access_fault(unsigned type, int ser,
 	pcb = lwp_getpcb(l);
 	onfault = (vaddr_t)pcb->pcb_onfault;
 
-	LWP_CACHE_CREDS(l, p);
 	sticks = p->p_sticks;
 
 #ifdef FPU_DEBUG
@@ -994,7 +992,6 @@ mem_access_fault4m(unsigned type, u_int 
 
 	l = curlwp;
 	p = l->l_proc;
-	LWP_CACHE_CREDS(l, p);
 	sticks = p->p_sticks;
 	pcb = lwp_getpcb(l);
 	onfault = (vaddr_t)pcb->pcb_onfault;

Index: src/sys/arch/sparc64/sparc64/syscall.c
diff -u src/sys/arch/sparc64/sparc64/syscall.c:1.48 src/sys/arch/sparc64/sparc64/syscall.c:1.49
--- src/sys/arch/sparc64/sparc64/syscall.c:1.48	Sat Apr  6 11:54:20 2019
+++ src/sys/arch/sparc64/sparc64/syscall.c	Thu Oct  5 19:41:06 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: syscall.c,v 1.48 2019/04/06 11:54:20 kamil Exp $ */
+/*	$NetBSD: syscall.c,v 1.49 2023/10/05 19:41:06 ad Exp $ */
 
 /*-
  * Copyright (c) 2005 The NetBSD Foundation, Inc.
@@ -79,7 +79,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.48 2019/04/06 11:54:20 kamil Exp $");
+__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.49 2023/10/05 19:41:06 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -287,7 +287,6 @@ syscall(struct trapframe64 *tf, register
 	vaddr_t opc, onpc;
 	int s64;
 
-	LWP_CACHE_CREDS(l, p);
 	curcpu()->ci_data.cpu_nsyscall++;
 	sticks = p->p_sticks;
 	l->l_md.md_tf = tf;

Index: src/sys/arch/sparc64/sparc64/trap.c
diff -u src/sys/arch/sparc64/sparc64/trap.c:1.194 src/sys/arch/sparc64/sparc64/trap.c:1.195
--- src/sys/arch/sparc64/sparc64/trap.c:1.194	Mon May 16 21:28:05 2022
+++ src/sys/arch/sparc64/sparc64/trap.c	Thu Oct  5 19:41:06 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.194 2022/05/16 21:28:05 mrg Exp $ */
+/*	$NetBSD: trap.c,v 1.195 2023/10/05 19:41:06 ad Exp $ */
 
 /*
  * Copyright (c) 1996-2002 Eduardo Horvath.  All rights reserved.
@@ -50,7 +50,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.194 2022/05/16 21:28:05 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.195 2023/10/05 19:41:06 ad Exp $");
 
 #include "opt_ddb.h"
 #include "opt_multiprocessor.h"
@@ -571,7 +571,6 @@ trap(struct trapframe64 *tf, unsigned in
 	}
 	l = curlwp;
 	p = l->l_proc;
-	LWP_CACHE_CREDS(l, p);
 	sticks = p->p_sticks;
 	pcb = lwp_getpcb(l);
 	l->l_md.md_tf = tf;	/* for ptrace/signals */
@@ -1093,7 +1092,6 @@ data_access_fault(struct trapframe64 *tf
 	p = l->l_proc;
 	pcb = lwp_getpcb(l);
 	onfault = (vaddr_t)pcb->pcb_onfault;
-	LWP_CACHE_CREDS(l, p);
 	sticks = p->p_sticks;
 	tstate = tf->tf_tstate;
 
@@ -1373,7 +1371,6 @@ data_access_error(struct trapframe64 *tf
 
 	l = curlwp;
 	pcb = lwp_getpcb(l);
-	LWP_CACHE_CREDS(l, l->l_proc);
 	sticks = l->l_proc->p_sticks;
 
 	printf("data error type %x sfsr=%lx sfva=%lx afsr=%lx afva=%lx tf=%p\n",
@@ -1501,7 +1498,6 @@ text_access_fault(struct trapframe64 *tf
 	curcpu()->ci_data.cpu_ntrap++;
 	l = curlwp;
 	p = l->l_proc;
-	LWP_CACHE_CREDS(l, p);
 	sticks = p->p_sticks;
 	tstate = tf->tf_tstate;
 	va = trunc_page(pc);
@@ -1620,7 +1616,6 @@ text_access_error(struct trapframe64 *tf
 	curcpu()->ci_data.cpu_ntrap++;
 	l = curlwp;
 	p = l->l_proc;
-	LWP_CACHE_CREDS(l, p);
 	sticks = p->p_sticks;
 
 	tstate = tf->tf_tstate;

Index: src/sys/arch/sun2/sun2/trap.c
diff -u src/sys/arch/sun2/sun2/trap.c:1.46 src/sys/arch/sun2/sun2/trap.c:1.47
--- src/sys/arch/sun2/sun2/trap.c:1.46	Thu Nov 21 19:24:01 2019
+++ src/sys/arch/sun2/sun2/trap.c	Thu Oct  5 19:41:06 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.46 2019/11/21 19:24:01 ad Exp $	*/
+/*	$NetBSD: trap.c,v 1.47 2023/10/05 19:41:06 ad Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1990, 1993
@@ -78,7 +78,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.46 2019/11/21 19:24:01 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.47 2023/10/05 19:41:06 ad Exp $");
 
 #include "opt_ddb.h"
 #include "opt_execfmt.h"
@@ -263,7 +263,6 @@ trap(struct trapframe *tf, int type, u_i
 		type |= T_USER;
 		sticks = p->p_sticks;
 		l->l_md.md_regs = tf->tf_regs;
-		LWP_CACHE_CREDS(l, p);
 	} else {
 		sticks = 0;
 		/* XXX: Detect trap recursion? */

Index: src/sys/arch/sun3/sun3/trap.c
diff -u src/sys/arch/sun3/sun3/trap.c:1.147 src/sys/arch/sun3/sun3/trap.c:1.148
--- src/sys/arch/sun3/sun3/trap.c:1.147	Mon Aug 10 10:51:21 2020
+++ src/sys/arch/sun3/sun3/trap.c	Thu Oct  5 19:41:06 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.147 2020/08/10 10:51:21 rin Exp $	*/
+/*	$NetBSD: trap.c,v 1.148 2023/10/05 19:41:06 ad Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1990, 1993
@@ -78,7 +78,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.147 2020/08/10 10:51:21 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.148 2023/10/05 19:41:06 ad Exp $");
 
 #include "opt_ddb.h"
 #include "opt_execfmt.h"
@@ -270,7 +270,6 @@ trap(struct trapframe *tf, int type, u_i
 		type |= T_USER;
 		sticks = p->p_sticks;
 		l->l_md.md_regs = tf->tf_regs;
-		LWP_CACHE_CREDS(l, p);
 	} else {
 		sticks = 0;
 		/* XXX: Detect trap recursion? */

Index: src/sys/arch/usermode/usermode/syscall.c
diff -u src/sys/arch/usermode/usermode/syscall.c:1.26 src/sys/arch/usermode/usermode/syscall.c:1.27
--- src/sys/arch/usermode/usermode/syscall.c:1.26	Mon Apr  3 17:58:41 2023
+++ src/sys/arch/usermode/usermode/syscall.c	Thu Oct  5 19:41:06 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: syscall.c,v 1.26 2023/04/03 17:58:41 gutteridge Exp $ */
+/* $NetBSD: syscall.c,v 1.27 2023/10/05 19:41:06 ad Exp $ */
 
 /*-
  * Copyright (c) 2007 Jared D. McNeill <jmcne...@invisible.ca>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.26 2023/04/03 17:58:41 gutteridge Exp $");
+__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.27 2023/10/05 19:41:06 ad Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -96,7 +96,6 @@ syscall(void)
 
 	/* system call accounting */
 	curcpu()->ci_data.cpu_nsyscall++;
-	LWP_CACHE_CREDS(l, l->l_proc);
 
 	/* XXX do we want do do emulation? */
 	md_syscall_get_opcode(ucp, &opcode);

Index: src/sys/arch/vax/vax/syscall.c
diff -u src/sys/arch/vax/vax/syscall.c:1.26 src/sys/arch/vax/vax/syscall.c:1.27
--- src/sys/arch/vax/vax/syscall.c:1.26	Sat Apr  6 11:54:21 2019
+++ src/sys/arch/vax/vax/syscall.c	Thu Oct  5 19:41:06 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: syscall.c,v 1.26 2019/04/06 11:54:21 kamil Exp $     */
+/*	$NetBSD: syscall.c,v 1.27 2023/10/05 19:41:06 ad Exp $     */
 
 /*
  * Copyright (c) 1994 Ludd, University of Lule}, Sweden.
@@ -28,7 +28,7 @@
  /* All bugs are subject to removal without further notice */
 		
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.26 2019/04/06 11:54:21 kamil Exp $");
+__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.27 2023/10/05 19:41:06 ad Exp $");
 
 #include "opt_multiprocessor.h"
 
@@ -76,8 +76,6 @@ syscall(struct trapframe *tf)
 
 	curcpu()->ci_data.cpu_nsyscall++;
  
- 	LWP_CACHE_CREDS(l, p);
-
 	l->l_md.md_utf = tf;
 
 	if ((unsigned long) tf->tf_code >= emul->e_nsysent)

Index: src/sys/arch/vax/vax/trap.c
diff -u src/sys/arch/vax/vax/trap.c:1.137 src/sys/arch/vax/vax/trap.c:1.138
--- src/sys/arch/vax/vax/trap.c:1.137	Sun Dec 11 18:02:40 2022
+++ src/sys/arch/vax/vax/trap.c	Thu Oct  5 19:41:06 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.137 2022/12/11 18:02:40 oster Exp $     */
+/*	$NetBSD: trap.c,v 1.138 2023/10/05 19:41:06 ad Exp $     */
 
 /*
  * Copyright (c) 1994 Ludd, University of Lule}, Sweden.
@@ -28,7 +28,7 @@
  /* All bugs are subject to removal without further notice */
 		
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.137 2022/12/11 18:02:40 oster Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.138 2023/10/05 19:41:06 ad Exp $");
 
 #include "opt_ddb.h"
 #include "opt_multiprocessor.h"
@@ -107,7 +107,6 @@ trap(struct trapframe *tf)
 		type |= T_USER;
 		oticks = p->p_sticks;
 		l->l_md.md_utf = tf;
-		LWP_CACHE_CREDS(l, p);
 	}
 
 	type &= ~(T_WRITE|T_PTEFETCH);

Index: src/sys/arch/x68k/x68k/trap.c
diff -u src/sys/arch/x68k/x68k/trap.c:1.111 src/sys/arch/x68k/x68k/trap.c:1.112
--- src/sys/arch/x68k/x68k/trap.c:1.111	Sat Sep 16 20:53:18 2023
+++ src/sys/arch/x68k/x68k/trap.c	Thu Oct  5 19:41:06 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.111 2023/09/16 20:53:18 andvar Exp $	*/
+/*	$NetBSD: trap.c,v 1.112 2023/10/05 19:41:06 ad Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.111 2023/09/16 20:53:18 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.112 2023/10/05 19:41:06 ad Exp $");
 
 #include "opt_ddb.h"
 #include "opt_kgdb.h"
@@ -275,7 +275,6 @@ trap(struct frame *fp, int type, unsigne
 		type |= T_USER;
 		sticks = p->p_sticks;
 		l->l_md.md_regs = fp->f_regs;
-		LWP_CACHE_CREDS(l, p);
 	}
 	switch (type) {
 

Index: src/sys/arch/x86/x86/syscall.c
diff -u src/sys/arch/x86/x86/syscall.c:1.21 src/sys/arch/x86/x86/syscall.c:1.22
--- src/sys/arch/x86/x86/syscall.c:1.21	Thu Mar 17 22:22:49 2022
+++ src/sys/arch/x86/x86/syscall.c	Thu Oct  5 19:41:06 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: syscall.c,v 1.21 2022/03/17 22:22:49 riastradh Exp $	*/
+/*	$NetBSD: syscall.c,v 1.22 2023/10/05 19:41:06 ad Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2000, 2009 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.21 2022/03/17 22:22:49 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.22 2023/10/05 19:41:06 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -106,7 +106,6 @@ syscall(struct trapframe *frame)
 
 	l = curlwp;
 	p = l->l_proc;
-	LWP_CACHE_CREDS(l, p);
 
 	code = X86_TF_RAX(frame) & (SYS_NSYSENT - 1);
 	callp = p->p_emul->e_sysent + code;

Index: src/sys/compat/freebsd/freebsd_syscall.c
diff -u src/sys/compat/freebsd/freebsd_syscall.c:1.6 src/sys/compat/freebsd/freebsd_syscall.c:1.7
--- src/sys/compat/freebsd/freebsd_syscall.c:1.6	Sat Apr  6 17:42:28 2019
+++ src/sys/compat/freebsd/freebsd_syscall.c	Thu Oct  5 19:41:06 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: freebsd_syscall.c,v 1.6 2019/04/06 17:42:28 kre Exp $	*/
+/*	$NetBSD: freebsd_syscall.c,v 1.7 2023/10/05 19:41:06 ad Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: freebsd_syscall.c,v 1.6 2019/04/06 17:42:28 kre Exp $");
+__KERNEL_RCSID(0, "$NetBSD: freebsd_syscall.c,v 1.7 2023/10/05 19:41:06 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -77,7 +77,6 @@ freebsd_syscall(struct trapframe *frame)
 
 	l = curlwp;
 	p = l->l_proc;
-	LWP_CACHE_CREDS(l, p);
 
 	code = frame->tf_eax;
 	callp = p->p_emul->e_sysent;

Index: src/sys/kern/kern_lwp.c
diff -u src/sys/kern/kern_lwp.c:1.264 src/sys/kern/kern_lwp.c:1.265
--- src/sys/kern/kern_lwp.c:1.264	Thu Oct  5 13:05:18 2023
+++ src/sys/kern/kern_lwp.c	Thu Oct  5 19:41:06 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_lwp.c,v 1.264 2023/10/05 13:05:18 riastradh Exp $	*/
+/*	$NetBSD: kern_lwp.c,v 1.265 2023/10/05 19:41:06 ad Exp $	*/
 
 /*-
  * Copyright (c) 2001, 2006, 2007, 2008, 2009, 2019, 2020, 2023
@@ -217,7 +217,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_lwp.c,v 1.264 2023/10/05 13:05:18 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_lwp.c,v 1.265 2023/10/05 19:41:06 ad Exp $");
 
 #include "opt_ddb.h"
 #include "opt_lockdebug.h"
@@ -1534,32 +1534,6 @@ lwp_find(struct proc *p, lwpid_t id)
 }
 
 /*
- * Update an LWP's cached credentials to mirror the process' master copy.
- *
- * This happens early in the syscall path, on user trap, and on LWP
- * creation.  A long-running LWP can also voluntarily choose to update
- * its credentials by calling this routine.  This may be called from
- * LWP_CACHE_CREDS(), which checks l->l_prflag & LPR_CRMOD beforehand.
- */
-void
-lwp_update_creds(struct lwp *l)
-{
-	kauth_cred_t oc;
-	struct proc *p;
-
-	p = l->l_proc;
-	oc = l->l_cred;
-
-	mutex_enter(p->p_lock);
-	kauth_cred_hold(p->p_cred);
-	l->l_cred = p->p_cred;
-	l->l_prflag &= ~LPR_CRMOD;
-	mutex_exit(p->p_lock);
-	if (oc != NULL)
-		kauth_cred_free(oc);
-}
-
-/*
  * Verify that an LWP is locked, and optionally verify that the lock matches
  * one we specify.
  */
@@ -1731,6 +1705,20 @@ lwp_userret(struct lwp *l)
 		}
 
 		/*
+		 * Start out with the correct credentials.
+		 */
+		if ((f & LW_CACHECRED) != 0) {
+			kauth_cred_t oc = l->l_cred;
+			mutex_enter(p->p_lock);
+			l->l_cred = kauth_cred_hold(p->p_cred);
+			lwp_lock(l);
+			l->l_flag &= ~LW_CACHECRED;
+			lwp_unlock(l);
+			mutex_exit(p->p_lock);
+			kauth_cred_free(oc);
+		}
+
+		/*
 		 * Process pending signals first, unless the process
 		 * is dumping core or exiting, where we will instead
 		 * enter the LW_WSUSPEND case below.

Index: src/sys/kern/kern_proc.c
diff -u src/sys/kern/kern_proc.c:1.273 src/sys/kern/kern_proc.c:1.274
--- src/sys/kern/kern_proc.c:1.273	Wed Oct  4 22:17:09 2023
+++ src/sys/kern/kern_proc.c	Thu Oct  5 19:41:07 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_proc.c,v 1.273 2023/10/04 22:17:09 ad Exp $	*/
+/*	$NetBSD: kern_proc.c,v 1.274 2023/10/05 19:41:07 ad Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2006, 2007, 2008, 2020, 2023
@@ -63,7 +63,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_proc.c,v 1.273 2023/10/04 22:17:09 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_proc.c,v 1.274 2023/10/05 19:41:07 ad Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_kstack.h"
@@ -1839,14 +1839,17 @@ proc_crmod_leave(kauth_cred_t scred, kau
 	if (scred != NULL) {
 		p->p_cred = scred;
 		LIST_FOREACH(l2, &p->p_lwps, l_sibling) {
-			if (l2 != l)
-				l2->l_prflag |= LPR_CRMOD;
+			if (l2 != l) {
+				lwp_lock(l2);
+				l2->l_flag |= LW_CACHECRED;
+				lwp_need_userret(l2);
+				lwp_unlock(l2);
+			}
 		}
 
 		/* Ensure the LWP cached credentials are up to date. */
 		if ((oc = l->l_cred) != scred) {
-			kauth_cred_hold(scred);
-			l->l_cred = scred;
+			l->l_cred = kauth_cred_hold(scred);
 		}
 	} else
 		oc = NULL;	/* XXXgcc */

Index: src/sys/rump/librump/rumpkern/lwproc.c
diff -u src/sys/rump/librump/rumpkern/lwproc.c:1.56 src/sys/rump/librump/rumpkern/lwproc.c:1.57
--- src/sys/rump/librump/rumpkern/lwproc.c:1.56	Wed Oct  4 20:29:18 2023
+++ src/sys/rump/librump/rumpkern/lwproc.c	Thu Oct  5 19:41:07 2023
@@ -1,4 +1,4 @@
-/*      $NetBSD: lwproc.c,v 1.56 2023/10/04 20:29:18 ad Exp $	*/
+/*      $NetBSD: lwproc.c,v 1.57 2023/10/05 19:41:07 ad Exp $	*/
 
 /*
  * Copyright (c) 2010, 2011 Antti Kantee.  All Rights Reserved.
@@ -28,7 +28,7 @@
 #define RUMP__CURLWP_PRIVATE
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lwproc.c,v 1.56 2023/10/04 20:29:18 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lwproc.c,v 1.57 2023/10/05 19:41:07 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/atomic.h>
@@ -99,25 +99,6 @@ lwp_find(struct proc *p, lwpid_t id)
 }
 
 void
-lwp_update_creds(struct lwp *l)
-{
-	struct proc *p;
-	kauth_cred_t oldcred;
-
-	p = l->l_proc;
-	oldcred = l->l_cred;
-	l->l_prflag &= ~LPR_CRMOD;
-
-	mutex_enter(p->p_lock);
-	kauth_cred_hold(p->p_cred);
-	l->l_cred = p->p_cred;
-	mutex_exit(p->p_lock);
-
-	if (oldcred != NULL)
-		kauth_cred_free(oldcred);
-}
-
-void
 rump_lwproc_init(void)
 {
 
@@ -374,7 +355,7 @@ lwproc_makelwp(struct proc *p, bool dosw
 	TAILQ_INIT(&l->l_ld_locks);
 	mutex_exit(p->p_lock);
 
-	lwp_update_creds(l);
+	l->l_cred = kauth_cred_hold(p->p_cred);
 	lwp_initspecific(l);
 	PSREF_DEBUG_INIT_LWP(l);
 

Index: src/sys/rump/librump/rumpkern/rump.c
diff -u src/sys/rump/librump/rumpkern/rump.c:1.360 src/sys/rump/librump/rumpkern/rump.c:1.361
--- src/sys/rump/librump/rumpkern/rump.c:1.360	Sat Sep 23 18:21:11 2023
+++ src/sys/rump/librump/rumpkern/rump.c	Thu Oct  5 19:41:07 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: rump.c,v 1.360 2023/09/23 18:21:11 ad Exp $	*/
+/*	$NetBSD: rump.c,v 1.361 2023/10/05 19:41:07 ad Exp $	*/
 
 /*
  * Copyright (c) 2007-2011 Antti Kantee.  All Rights Reserved.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rump.c,v 1.360 2023/09/23 18:21:11 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rump.c,v 1.361 2023/10/05 19:41:07 ad Exp $");
 
 #include <sys/systm.h>
 #define ELFSIZE ARCH_ELFSIZE
@@ -327,7 +327,7 @@ rump_init_callback(void (*cpuinit_callba
 	chgproccnt(0, 1);
 
 	l->l_proc = &proc0;
-	lwp_update_creds(l);
+	l->l_cred = kauth_cred_hold(l->l_proc->p_cred);
 
 	lwpinit_specificdata();
 	lwp_initspecific(&lwp0);

Index: src/sys/rump/librump/rumpkern/scheduler.c
diff -u src/sys/rump/librump/rumpkern/scheduler.c:1.54 src/sys/rump/librump/rumpkern/scheduler.c:1.55
--- src/sys/rump/librump/rumpkern/scheduler.c:1.54	Wed Oct  4 20:28:06 2023
+++ src/sys/rump/librump/rumpkern/scheduler.c	Thu Oct  5 19:41:07 2023
@@ -1,4 +1,4 @@
-/*      $NetBSD: scheduler.c,v 1.54 2023/10/04 20:28:06 ad Exp $	*/
+/*      $NetBSD: scheduler.c,v 1.55 2023/10/05 19:41:07 ad Exp $	*/
 
 /*
  * Copyright (c) 2010, 2011 Antti Kantee.  All Rights Reserved.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: scheduler.c,v 1.54 2023/10/04 20:28:06 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: scheduler.c,v 1.55 2023/10/05 19:41:07 ad Exp $");
 
 #include <sys/param.h>
 #include <sys/atomic.h>
@@ -255,8 +255,15 @@ rump_schedule()
 	 * start a real thread.
 	 */
 	if (__predict_true((l = curlwp) != NULL)) {
+		struct proc *p = l->l_proc;
 		rump_schedule_cpu(l);
-		LWP_CACHE_CREDS(l, l->l_proc);
+		if (l->l_cred != p->p_cred) {
+			kauth_cred_t oc = l->l_cred;
+			mutex_enter(p->p_lock);
+			l->l_cred = kauth_cred_hold(p->p_cred);
+			mutex_exit(p->p_lock);
+			kauth_cred_free(oc);
+		}
 	} else {
 		lwp0busy();
 

Index: src/sys/sys/lwp.h
diff -u src/sys/sys/lwp.h:1.226 src/sys/sys/lwp.h:1.227
--- src/sys/sys/lwp.h:1.226	Wed Oct  4 20:29:18 2023
+++ src/sys/sys/lwp.h	Thu Oct  5 19:41:07 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: lwp.h,v 1.226 2023/10/04 20:29:18 ad Exp $	*/
+/*	$NetBSD: lwp.h,v 1.227 2023/10/05 19:41:07 ad Exp $	*/
 
 /*
  * Copyright (c) 2001, 2006, 2007, 2008, 2009, 2010, 2019, 2020, 2023
@@ -263,6 +263,7 @@ extern int		maxlwp __read_mostly;	/* max
 #define	LW_WEXIT	0x00100000 /* Exit before return to user */
 #define	LW_PENDSIG	0x01000000 /* Pending signal for us */
 #define	LW_CANCELLED	0x02000000 /* tsleep should not sleep */
+#define	LW_CACHECRED	0x04000000 /* Cache new process credential */
 #define	LW_WREBOOT	0x08000000 /* System is rebooting, please suspend */
 #define	LW_UNPARKED	0x10000000 /* Unpark op pending */
 #define	LW_RUMP_CLEAR	0x40000000 /* Clear curlwp in RUMP scheduler */
@@ -295,15 +296,14 @@ extern int		maxlwp __read_mostly;	/* max
  * with p_lock held.
  */
 #define	LPR_DETACHED	0x00800000 /* Won't be waited for. */
-#define	LPR_CRMOD	0x00000100 /* Credentials modified */
 #define	LPR_DRAINING	0x80000000 /* Draining references before exiting */
 
 /*
  * Mask indicating that there is "exceptional" work to be done on return to
  * user.
  */
-#define	LW_USERRET	\
-    (LW_WEXIT | LW_PENDSIG | LW_WREBOOT | LW_WSUSPEND | LW_WCORE | LW_LWPCTL)
+#define	LW_USERRET	(LW_WEXIT | LW_PENDSIG | LW_WREBOOT | LW_WSUSPEND \
+    | LW_WCORE | LW_LWPCTL | LW_CACHECRED)
 
 /*
  * Status values.
@@ -334,13 +334,6 @@ lwp_getpcb(struct lwp *l)
 #endif /* _KERNEL || _KMEMUSER */
 
 #ifdef _KERNEL
-#define	LWP_CACHE_CREDS(l, p)						\
-do {									\
-	(void)p;							\
-	if (__predict_false((l)->l_prflag & LPR_CRMOD))			\
-		lwp_update_creds(l);					\
-} while (/* CONSTCOND */ 0)
-
 void	lwpinit(void);
 void	lwp0_init(void);
 
@@ -371,7 +364,6 @@ void	lwp_exit(lwp_t *);
 int	lwp_suspend(lwp_t *, lwp_t *);
 int	lwp_create1(lwp_t *, const void *, size_t, u_long, lwpid_t *);
 void	lwp_start(lwp_t *, int);
-void	lwp_update_creds(lwp_t *);
 void	lwp_migrate(lwp_t *, struct cpu_info *);
 lwp_t *	lwp_find2(pid_t, lwpid_t);
 lwp_t *	lwp_find(proc_t *, int);

Reply via email to