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);