Module Name:    src
Committed By:   riastradh
Date:           Sat Dec  7 02:27:38 UTC 2024

Modified Files:
        src/sys/kern: vfs_acl.c vfs_bio.c vfs_cache.c vfs_getcwd.c vfs_hooks.c
            vfs_init.c vfs_lockf.c vfs_lookup.c vfs_mount.c vfs_subr.c
            vfs_trans.c vfs_vnode.c vfs_vnops.c vfs_wapbl.c vfs_xattr.c

Log Message:
vfs(9): Sprinkle SET_ERROR dtrace probes.

PR kern/58378: Kernel error code origination lacks dtrace probes


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/kern/vfs_acl.c
cvs rdiff -u -r1.305 -r1.306 src/sys/kern/vfs_bio.c
cvs rdiff -u -r1.158 -r1.159 src/sys/kern/vfs_cache.c
cvs rdiff -u -r1.62 -r1.63 src/sys/kern/vfs_getcwd.c
cvs rdiff -u -r1.8 -r1.9 src/sys/kern/vfs_hooks.c
cvs rdiff -u -r1.66 -r1.67 src/sys/kern/vfs_init.c
cvs rdiff -u -r1.82 -r1.83 src/sys/kern/vfs_lockf.c
cvs rdiff -u -r1.237 -r1.238 src/sys/kern/vfs_lookup.c
cvs rdiff -u -r1.109 -r1.110 src/sys/kern/vfs_mount.c
cvs rdiff -u -r1.501 -r1.502 src/sys/kern/vfs_subr.c
cvs rdiff -u -r1.72 -r1.73 src/sys/kern/vfs_trans.c
cvs rdiff -u -r1.155 -r1.156 src/sys/kern/vfs_vnode.c
cvs rdiff -u -r1.243 -r1.244 src/sys/kern/vfs_vnops.c
cvs rdiff -u -r1.115 -r1.116 src/sys/kern/vfs_wapbl.c
cvs rdiff -u -r1.40 -r1.41 src/sys/kern/vfs_xattr.c

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

Modified files:

Index: src/sys/kern/vfs_acl.c
diff -u src/sys/kern/vfs_acl.c:1.2 src/sys/kern/vfs_acl.c:1.3
--- src/sys/kern/vfs_acl.c:1.2	Sat Dec  7 02:11:42 2024
+++ src/sys/kern/vfs_acl.c	Sat Dec  7 02:27:38 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_acl.c,v 1.2 2024/12/07 02:11:42 riastradh Exp $	*/
+/*	$NetBSD: vfs_acl.c,v 1.3 2024/12/07 02:27:38 riastradh Exp $	*/
 
 /*-
  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -45,7 +45,7 @@
 #if 0
 __FBSDID("$FreeBSD: head/sys/kern/vfs_acl.c 356337 2020-01-03 22:29:58Z mjg $");
 #endif
-__KERNEL_RCSID(0, "$NetBSD: vfs_acl.c,v 1.2 2024/12/07 02:11:42 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_acl.c,v 1.3 2024/12/07 02:27:38 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -60,6 +60,7 @@ __KERNEL_RCSID(0, "$NetBSD: vfs_acl.c,v 
 #include <sys/mutex.h>
 #include <sys/namei.h>
 #include <sys/proc.h>
+#include <sys/sdt.h>
 #include <sys/syscallargs.h>
 #include <sys/systm.h>
 #include <sys/vnode.h>
@@ -72,7 +73,7 @@ acl_copy_oldacl_into_acl(const struct ol
 	int i;
 
 	if (source->acl_cnt < 0 || source->acl_cnt > OLDACL_MAX_ENTRIES)
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 
 	memset(dest, 0, sizeof(*dest));
 
@@ -94,7 +95,7 @@ acl_copy_acl_into_oldacl(const struct ac
 	int i;
 
 	if (source->acl_cnt > OLDACL_MAX_ENTRIES)
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 
 	memset(dest, 0, sizeof(*dest));
 
@@ -139,7 +140,7 @@ acl_copyin(const void *user_acl, struct 
 	default:
 		error = copyin(user_acl, kernel_acl, sizeof(*kernel_acl));
 		if (kernel_acl->acl_maxcnt != ACL_MAX_ENTRIES)
-			return EINVAL;
+			return SET_ERROR(EINVAL);
 	}
 
 	return error;
@@ -169,7 +170,7 @@ acl_copyout(const struct acl *kernel_acl
 		if (error)
 			return error;
 		if (am != ACL_MAX_ENTRIES)
-			return EINVAL;
+			return SET_ERROR(EINVAL);
 
 		error = copyout(kernel_acl, user_acl, sizeof(*kernel_acl));
 	}

Index: src/sys/kern/vfs_bio.c
diff -u src/sys/kern/vfs_bio.c:1.305 src/sys/kern/vfs_bio.c:1.306
--- src/sys/kern/vfs_bio.c:1.305	Sat Dec  7 02:13:30 2024
+++ src/sys/kern/vfs_bio.c	Sat Dec  7 02:27:38 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_bio.c,v 1.305 2024/12/07 02:13:30 riastradh Exp $	*/
+/*	$NetBSD: vfs_bio.c,v 1.306 2024/12/07 02:27:38 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2008, 2009, 2019, 2020 The NetBSD Foundation, Inc.
@@ -123,7 +123,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_bio.c,v 1.305 2024/12/07 02:13:30 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_bio.c,v 1.306 2024/12/07 02:27:38 riastradh Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_biohist.h"
@@ -322,7 +322,7 @@ buf_setvalimit(vsize_t sz)
 
 	/* We need to accommodate at least NMEMPOOLS of MAXBSIZE each */
 	if (sz < NMEMPOOLS * MAXBSIZE)
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 
 	bufmem_valimit = sz;
 	return 0;
@@ -453,7 +453,7 @@ buf_memcalc(void)
 	if (bufmem_valimit != 0 && n > bufmem_valimit)
 		n = bufmem_valimit;
 
-	return (n);
+	return n;
 }
 
 /*
@@ -735,7 +735,7 @@ bio_doread(struct vnode *vp, daddr_t blk
 			mp->mnt_stat.f_asyncreads++;
 	}
 
-	return (bp);
+	return bp;
 }
 
 /*
@@ -753,7 +753,7 @@ bread(struct vnode *vp, daddr_t blkno, i
 	/* Get buffer for block. */
 	bp = *bpp = bio_doread(vp, blkno, size, 0);
 	if (bp == NULL)
-		return ENOMEM;
+		return SET_ERROR(ENOMEM);
 
 	/* Wait for the read to complete, and return result. */
 	error = biowait(bp);
@@ -782,7 +782,7 @@ breadn(struct vnode *vp, daddr_t blkno, 
 
 	bp = *bpp = bio_doread(vp, blkno, size, 0);
 	if (bp == NULL)
-		return ENOMEM;
+		return SET_ERROR(ENOMEM);
 
 	/*
 	 * For each of the read-ahead blocks, start a read, if necessary.
@@ -864,7 +864,7 @@ bwrite(buf_t *bp)
 	sync = !ISSET(bp->b_flags, B_ASYNC);
 	if (sync && mp != NULL && ISSET(mp->mnt_flag, MNT_ASYNC)) {
 		bdwrite(bp);
-		return (0);
+		return 0;
 	}
 
 	/*
@@ -918,9 +918,9 @@ bwrite(buf_t *bp)
 		/* Release the buffer. */
 		brelse(bp, 0);
 
-		return (rv);
+		return rv;
 	} else {
-		return (0);
+		return 0;
 	}
 }
 
@@ -929,7 +929,7 @@ vn_bwrite(void *v)
 {
 	struct vop_bwrite_args *ap = v;
 
-	return (bwrite(ap->a_bp));
+	return bwrite(ap->a_bp);
 }
 
 /*
@@ -1194,7 +1194,7 @@ incore(struct vnode *vp, daddr_t blkno)
 		}
 	}
 
-	return (NULL);
+	return NULL;
 }
 
 /*
@@ -1223,7 +1223,7 @@ loop:
 			mutex_exit(&bufcache_lock);
 			SDT_PROBE4(io, kernel, , getblk__done,
 			    vp, blkno, size, NULL);
-			return (NULL);
+			return NULL;
 		}
 		KASSERT(!cv_has_waiters(&bp->b_done));
 #ifdef DIAGNOSTIC
@@ -1271,7 +1271,7 @@ loop:
 	}
 	BIO_SETPRIO(bp, BPRIO_DEFAULT);
 	SDT_PROBE4(io, kernel, , getblk__done,  vp, blkno, size, bp);
-	return (bp);
+	return bp;
 }
 
 /*
@@ -1293,7 +1293,7 @@ geteblk(int size)
 	BIO_SETPRIO(bp, BPRIO_DEFAULT);
 	error = allocbuf(bp, size, 0);
 	KASSERT(error == 0);
-	return (bp);
+	return bp;
 }
 
 /*
@@ -1336,7 +1336,7 @@ allocbuf(buf_t *bp, int size, int preser
 	 */
 	addr = buf_alloc(desired_size);
 	if (addr == NULL)
-		return ENOMEM;
+		return SET_ERROR(ENOMEM);
 	if (preserve)
 		memcpy(addr, bp->b_data, MIN(oldsize,desired_size));
 	if (bp->b_data != NULL)
@@ -1410,7 +1410,7 @@ start:
 			bp->b_freelistindex = -1;
 #endif /* defined(DIAGNOSTIC) */
 			SDT_PROBE1(io, kernel, , getnewbuf__done,  bp);
-			return (bp);
+			return bp;
 		}
 		mutex_enter(&bufcache_lock);
 	}
@@ -1454,7 +1454,7 @@ start:
 				    &bufcache_lock, slptimeo);
 		}
 		SDT_PROBE1(io, kernel, , getnewbuf__done,  NULL);
-		return (NULL);
+		return NULL;
 	}
 
 #ifdef DIAGNOSTIC
@@ -1492,7 +1492,7 @@ start:
 		fstrans_done(transmp);
 		mutex_enter(&bufcache_lock);
 		SDT_PROBE1(io, kernel, , getnewbuf__done,  NULL);
-		return (NULL);
+		return NULL;
 	}
 
 	KASSERT(transmp == NULL);
@@ -1522,7 +1522,7 @@ start:
 	}
 
 	SDT_PROBE1(io, kernel, , getnewbuf__done,  bp);
-	return (bp);
+	return bp;
 }
 
 /*
@@ -1785,10 +1785,10 @@ sysctl_dobuf(SYSCTLFN_ARGS)
 	int error, elem_count, retries;
 
 	if (namelen == 1 && name[0] == CTL_QUERY)
-		return (sysctl_query(SYSCTLFN_CALL(rnode)));
+		return sysctl_query(SYSCTLFN_CALL(rnode));
 
 	if (namelen != 4)
-		return (EINVAL);
+		return SET_ERROR(EINVAL);
 
 	retries = 100;
 retry:
@@ -1810,7 +1810,7 @@ retry:
 	 */
 	if (op != KERN_BUF_ALL || arg != KERN_BUF_ALL ||
 	    elem_size < 1 || elem_count < 0)
-		return (EINVAL);
+		return SET_ERROR(EINVAL);
 
 	if (oldp == NULL) {
 		/* count only, don't run through the buffer queues */
@@ -1844,7 +1844,7 @@ retry:
 					 * bail out.
 					 */
 					if (retries-- == 0) {
-						error = EAGAIN;
+						error = SET_ERROR(EAGAIN);
 						break;
 					}
 					mutex_exit(&bufcache_lock);
@@ -1866,7 +1866,7 @@ retry:
 
 	*oldlenp = needed;
 
-	return (error);
+	return error;
 }
 
 static int
@@ -1890,23 +1890,23 @@ sysctl_bufvm_update(SYSCTLFN_ARGS)
 	/* Update the copy */
 	error = sysctl_lookup(SYSCTLFN_CALL(&node));
 	if (error || newp == NULL)
-		return (error);
+		return error;
 
 	if (rnode->sysctl_data == &bufcache) {
 		if (temp_bufcache > 100)
-			return (EINVAL);
+			return SET_ERROR(EINVAL);
 		bufcache = temp_bufcache;
 		buf_setwm();
 	} else if (rnode->sysctl_data == &bufmem_lowater) {
 		if (bufmem_hiwater - temp_water < 16)
-			return (EINVAL);
+			return SET_ERROR(EINVAL);
 		bufmem_lowater = temp_water;
 	} else if (rnode->sysctl_data == &bufmem_hiwater) {
 		if (temp_water - bufmem_lowater < 16)
-			return (EINVAL);
+			return SET_ERROR(EINVAL);
 		bufmem_hiwater = temp_water;
 	} else
-		return (EINVAL);
+		return SET_ERROR(EINVAL);
 
 	/* Drain until below new high water mark */
 	sysctl_unlock();
@@ -2085,7 +2085,7 @@ nestiobuf_iodone(buf_t *bp)
 		 * Not all got transferred, raise an error. We have no way to
 		 * propagate these conditions to mbp.
 		 */
-		error = EIO;
+		error = SET_ERROR(EIO);
 	}
 
 	donebytes = bp->b_bufsize;
@@ -2193,7 +2193,7 @@ bbusy(buf_t *bp, bool intr, int timo, km
 
 	if ((bp->b_cflags & BC_BUSY) != 0) {
 		if (curlwp == uvm.pagedaemon_lwp) {
-			error = EDEADLK;
+			error = SET_ERROR(EDEADLK);
 			goto out;
 		}
 		bp->b_cflags |= BC_WANTED;
@@ -2213,7 +2213,7 @@ bbusy(buf_t *bp, bool intr, int timo, km
 		if (interlock != NULL)
 			mutex_enter(interlock);
 		if (error == 0)
-			error = EPASSTHROUGH;
+			error = SET_ERROR(EPASSTHROUGH);
 	} else {
 		bp->b_cflags |= BC_BUSY;
 		error = 0;

Index: src/sys/kern/vfs_cache.c
diff -u src/sys/kern/vfs_cache.c:1.158 src/sys/kern/vfs_cache.c:1.159
--- src/sys/kern/vfs_cache.c:1.158	Sat Dec  7 02:23:09 2024
+++ src/sys/kern/vfs_cache.c	Sat Dec  7 02:27:38 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_cache.c,v 1.158 2024/12/07 02:23:09 riastradh Exp $	*/
+/*	$NetBSD: vfs_cache.c,v 1.159 2024/12/07 02:27:38 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2008, 2019, 2020, 2023 The NetBSD Foundation, Inc.
@@ -184,7 +184,7 @@
 #define __NAMECACHE_PRIVATE
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_cache.c,v 1.158 2024/12/07 02:23:09 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_cache.c,v 1.159 2024/12/07 02:27:38 riastradh Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_ddb.h"
@@ -834,7 +834,7 @@ cache_revlookup(struct vnode *vp, struct
 		if (error != 0) {
 			rw_exit(&vi->vi_nc_listlock);
 			COUNT(ncs_denied);
-			return EACCES;
+			return SET_ERROR(EACCES);
 		}
 	}
 	TAILQ_FOREACH(ncp, &vi->vi_nc_list, nc_list) {
@@ -877,7 +877,7 @@ cache_revlookup(struct vnode *vp, struct
 				rw_exit(&vi->vi_nc_listlock);
 				SDT_PROBE(vfs, namecache, revlookup,
 				    fail, vp, ERANGE, 0, 0, 0);
-				return (ERANGE);
+				return SET_ERROR(ERANGE);
 			}
 			memcpy(bp, ncp->nc_name, nlen);
 			*bpp = bp;
@@ -899,13 +899,13 @@ cache_revlookup(struct vnode *vp, struct
 		SDT_PROBE(vfs, namecache, revlookup, success, vp, dvp,
 		    0, 0, 0);
 		COUNT(ncs_revhits);
-		return (0);
+		return 0;
 	}
 	rw_exit(&vi->vi_nc_listlock);
 	COUNT(ncs_revmiss);
 out:
 	*dvpp = NULL;
-	return (-1);
+	return -1;
 }
 
 /*

Index: src/sys/kern/vfs_getcwd.c
diff -u src/sys/kern/vfs_getcwd.c:1.62 src/sys/kern/vfs_getcwd.c:1.63
--- src/sys/kern/vfs_getcwd.c:1.62	Sat Dec  7 02:11:42 2024
+++ src/sys/kern/vfs_getcwd.c	Sat Dec  7 02:27:38 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_getcwd.c,v 1.62 2024/12/07 02:11:42 riastradh Exp $	*/
+/*	$NetBSD: vfs_getcwd.c,v 1.63 2024/12/07 02:27:38 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2020 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_getcwd.c,v 1.62 2024/12/07 02:11:42 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_getcwd.c,v 1.63 2024/12/07 02:27:38 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -44,6 +44,7 @@ __KERNEL_RCSID(0, "$NetBSD: vfs_getcwd.c
 #include <sys/mount.h>
 #include <sys/namei.h>
 #include <sys/proc.h>
+#include <sys/sdt.h>
 #include <sys/stat.h>
 #include <sys/syscallargs.h>
 #include <sys/systm.h>
@@ -213,7 +214,7 @@ unionread:
 				/* check for malformed directory.. */
 				if (reclen < _DIRENT_MINSIZE(dp) ||
 				    reclen > len) {
-					error = EINVAL;
+					error = SET_ERROR(EINVAL);
 					goto out;
 				}
 				/*
@@ -228,7 +229,7 @@ unionread:
 
 					bp -= dp->d_namlen;
 					if (bp <= bufp) {
-						error = ERANGE;
+						error = SET_ERROR(ERANGE);
 						goto out;
 					}
 					memcpy(bp, dp->d_name, dp->d_namlen);
@@ -258,7 +259,7 @@ unionread:
 		goto unionread;
 	}
 #endif
-	error = ENOENT;
+	error = SET_ERROR(ENOENT);
 
 out:
 	VOP_UNLOCK(uvp);
@@ -347,7 +348,7 @@ getcwd_common(struct vnode *lvp, struct 
 				 */
 				if (tvp == NULL) {
 					VOP_UNLOCK(lvp);
-					error = ENOENT;
+					error = SET_ERROR(ENOENT);
 					goto out;
 				}
 				vref(tvp);
@@ -387,7 +388,7 @@ getcwd_common(struct vnode *lvp, struct 
 			}
 			if (lvp->v_type != VDIR) {
 				VOP_UNLOCK(lvp);
-				error = ENOTDIR;
+				error = SET_ERROR(ENOTDIR);
 				goto out;
 			}
 			error = getcwd_scandir(lvp, &uvp, &bp, bufp, l);
@@ -489,7 +490,7 @@ sys___getcwd(struct lwp *l, const struct
 	if (len > MAXPATHLEN * 4)
 		len = MAXPATHLEN * 4;
 	else if (len < 2)
-		return ERANGE;
+		return SET_ERROR(ERANGE);
 
 	path = kmem_alloc(len, KM_SLEEP);
 	bp = &path[len];
@@ -540,7 +541,7 @@ vnode_to_path(char *path, size_t len, st
 
 	error = cache_revlookup(vp, &dvp, &bp, path, false, 0);
 	if (error != 0)
-		return (error == -1 ? ENOENT : error);
+		return (error == -1 ? SET_ERROR(ENOENT) : error);
 
 	*(--bp) = '/';
 	error = getcwd_common(dvp, NULL, &bp, path, len / 2,

Index: src/sys/kern/vfs_hooks.c
diff -u src/sys/kern/vfs_hooks.c:1.8 src/sys/kern/vfs_hooks.c:1.9
--- src/sys/kern/vfs_hooks.c:1.8	Sat Dec  7 02:23:09 2024
+++ src/sys/kern/vfs_hooks.c	Sat Dec  7 02:27:38 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_hooks.c,v 1.8 2024/12/07 02:23:09 riastradh Exp $	*/
+/*	$NetBSD: vfs_hooks.c,v 1.9 2024/12/07 02:27:38 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2005 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_hooks.c,v 1.8 2024/12/07 02:23:09 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_hooks.c,v 1.9 2024/12/07 02:27:38 riastradh Exp $");
 
 #include <sys/param.h>
 
@@ -42,6 +42,7 @@ __KERNEL_RCSID(0, "$NetBSD: vfs_hooks.c,
 #include <sys/mount.h>
 #include <sys/mutex.h>
 #include <sys/queue.h>
+#include <sys/sdt.h>
 
 LIST_HEAD(vfs_hooks_head, vfs_hooks) vfs_hooks_head =
     LIST_HEAD_INITIALIZER(vfs_hooks_head);
@@ -80,7 +81,7 @@ vfs_hooks_detach(struct vfs_hooks *vfs_h
                 }
         }
         if (hp == NULL)
-		ret = ESRCH;
+		ret = SET_ERROR(ESRCH);
 	mutex_exit(&vfs_hooks_lock);
 
 	return ret;

Index: src/sys/kern/vfs_init.c
diff -u src/sys/kern/vfs_init.c:1.66 src/sys/kern/vfs_init.c:1.67
--- src/sys/kern/vfs_init.c:1.66	Sat Dec  7 02:23:09 2024
+++ src/sys/kern/vfs_init.c	Sat Dec  7 02:27:38 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_init.c,v 1.66 2024/12/07 02:23:09 riastradh Exp $	*/
+/*	$NetBSD: vfs_init.c,v 1.67 2024/12/07 02:27:38 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2000, 2008 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_init.c,v 1.66 2024/12/07 02:23:09 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_init.c,v 1.67 2024/12/07 02:27:38 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -138,7 +138,7 @@ int
 vn_default_error(void *v)
 {
 
-	return EOPNOTSUPP;
+	return SET_ERROR(EOPNOTSUPP);
 }
 
 static struct sysctllog *vfs_sysctllog;
@@ -354,15 +354,15 @@ usermount_common_policy(struct mount *mp
 
 	/* No exporting if unprivileged. */
 	if (flags & MNT_EXPORTED)
-		return EPERM;
+		return SET_ERROR(EPERM);
 
 	/* Must have 'nosuid' and 'nodev'. */
 	if ((flags & MNT_NODEV) == 0 || (flags & MNT_NOSUID) == 0)
-		return EPERM;
+		return SET_ERROR(EPERM);
 
 	/* Retain 'noexec'. */
 	if ((mp->mnt_flag & MNT_NOEXEC) && (flags & MNT_NOEXEC) == 0)
-		return EPERM;
+		return SET_ERROR(EPERM);
 
 	return 0;
 }
@@ -482,7 +482,7 @@ vfs_attach(struct vfsops *vfs)
 	 */
 	LIST_FOREACH(v, &vfs_list, vfs_list) {
 		if (strcmp(vfs->vfs_name, v->vfs_name) == 0) {
-			error = EEXIST;
+			error = SET_ERROR(EEXIST);
 			goto out;
 		}
 	}
@@ -526,7 +526,7 @@ vfs_detach(struct vfsops *vfs)
 	 * Make sure no one is using the filesystem.
 	 */
 	if (vfs->vfs_refcount != 0) {
-		error = EBUSY;
+		error = SET_ERROR(EBUSY);
 		goto out;
 	}
 
@@ -541,7 +541,7 @@ vfs_detach(struct vfsops *vfs)
 	}
 
 	if (v == NULL) {
-		error = ESRCH;
+		error = SET_ERROR(ESRCH);
 		goto out;
 	}
 

Index: src/sys/kern/vfs_lockf.c
diff -u src/sys/kern/vfs_lockf.c:1.82 src/sys/kern/vfs_lockf.c:1.83
--- src/sys/kern/vfs_lockf.c:1.82	Sat Dec  7 02:11:42 2024
+++ src/sys/kern/vfs_lockf.c	Sat Dec  7 02:27:38 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_lockf.c,v 1.82 2024/12/07 02:11:42 riastradh Exp $	*/
+/*	$NetBSD: vfs_lockf.c,v 1.83 2024/12/07 02:27:38 riastradh Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1989, 1993
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_lockf.c,v 1.82 2024/12/07 02:11:42 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_lockf.c,v 1.83 2024/12/07 02:27:38 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -48,6 +48,7 @@ __KERNEL_RCSID(0, "$NetBSD: vfs_lockf.c,
 #include <sys/kmem.h>
 #include <sys/lockf.h>
 #include <sys/proc.h>
+#include <sys/sdt.h>
 #include <sys/systm.h>
 #include <sys/uidinfo.h>
 #include <sys/vnode.h>
@@ -523,7 +524,7 @@ lf_setlock(struct lockf *lock, struct lo
 		 */
 		if ((lock->lf_flags & F_WAIT) == 0) {
 			lf_free(lock);
-			return EAGAIN;
+			return SET_ERROR(EAGAIN);
 		}
 		/*
 		 * We are blocked. Since flock style locks cover
@@ -568,7 +569,7 @@ lf_setlock(struct lockf *lock, struct lo
 				p = (struct proc *)waitblock->lf_id;
 				if (p == curproc) {
 					lf_free(lock);
-					return EDEADLK;
+					return SET_ERROR(EDEADLK);
 				}
 			}
 			/*
@@ -578,7 +579,7 @@ lf_setlock(struct lockf *lock, struct lo
 			 */
 			if (i >= maxlockdepth) {
 				lf_free(lock);
-				return EDEADLK;
+				return SET_ERROR(EDEADLK);
 			}
 		}
 		/*
@@ -817,12 +818,12 @@ lf_advlock(struct vop_advlock_args *ap, 
 
 	case SEEK_END:
 		if (fl->l_start > __type_max(off_t) - size)
-			return EINVAL;
+			return SET_ERROR(EINVAL);
 		start = size + fl->l_start;
 		break;
 
 	default:
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 	}
 
 	if (fl->l_len == 0)
@@ -831,18 +832,18 @@ lf_advlock(struct vop_advlock_args *ap, 
 		if (fl->l_len >= 0) {
 			if (start >= 0 &&
 			    fl->l_len - 1 > __type_max(off_t) - start)
-				return EINVAL;
+				return SET_ERROR(EINVAL);
 			end = start + (fl->l_len - 1);
 		} else {
 			/* lockf() allows -ve lengths */
 			if (start < 0)
-				return EINVAL;
+				return SET_ERROR(EINVAL);
 			end = start - 1;
 			start += fl->l_len;
 		}
 	}
 	if (start < 0)
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 
 	/*
 	 * Allocate locks before acquiring the interlock.  We need two
@@ -860,7 +861,7 @@ lf_advlock(struct vop_advlock_args *ap, 
 			 */
 			sparelock = lf_alloc(0);
 			if (sparelock == NULL) {
-				error = ENOMEM;
+				error = SET_ERROR(ENOMEM);
 				goto quit;
 			}
 			break;
@@ -872,7 +873,7 @@ lf_advlock(struct vop_advlock_args *ap, 
 		break;
 
 	default:
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 	}
 
 	switch (ap->a_op) {
@@ -893,7 +894,7 @@ lf_advlock(struct vop_advlock_args *ap, 
 		break;
 	}
 	if (lock == NULL) {
-		error = ENOMEM;
+		error = SET_ERROR(ENOMEM);
 		goto quit;
 	}
 

Index: src/sys/kern/vfs_lookup.c
diff -u src/sys/kern/vfs_lookup.c:1.237 src/sys/kern/vfs_lookup.c:1.238
--- src/sys/kern/vfs_lookup.c:1.237	Sat Dec  7 02:23:09 2024
+++ src/sys/kern/vfs_lookup.c	Sat Dec  7 02:27:38 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_lookup.c,v 1.237 2024/12/07 02:23:09 riastradh Exp $	*/
+/*	$NetBSD: vfs_lookup.c,v 1.238 2024/12/07 02:27:38 riastradh Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1989, 1993
@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_lookup.c,v 1.237 2024/12/07 02:23:09 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_lookup.c,v 1.238 2024/12/07 02:27:38 riastradh Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_magiclinks.h"
@@ -57,6 +57,7 @@ __KERNEL_RCSID(0, "$NetBSD: vfs_lookup.c
 #include <sys/mount.h>
 #include <sys/namei.h>
 #include <sys/proc.h>
+#include <sys/sdt.h>
 #include <sys/syslimits.h>
 #include <sys/syslog.h>
 #include <sys/systm.h>
@@ -309,7 +310,7 @@ pathbuf_copyin(const char *userpath, str
 
 	pb = pathbuf_create_raw();
 	if (pb == NULL) {
-		return ENOMEM;
+		return SET_ERROR(ENOMEM);
 	}
 	error = copyinstr(userpath, pb->pb_path, PATH_MAX, NULL);
 	if (error) {
@@ -335,7 +336,7 @@ pathbuf_maybe_copyin(const char *path, e
 	} else {
 		*ret = pathbuf_create(path);
 		if (*ret == NULL) {
-			return ENOMEM;
+			return SET_ERROR(ENOMEM);
 		}
 		return 0;
 	}
@@ -681,7 +682,7 @@ namei_start(struct namei_state *state, i
 	 */
 	if (ndp->ni_pathlen == 1) {
 		ndp->ni_erootdir = NULL;
-		return ENOENT;
+		return SET_ERROR(ENOENT);
 	}
 
 	ndp->ni_loopcnt = 0;
@@ -696,13 +697,13 @@ namei_start(struct namei_state *state, i
 	}
 
 	if (startdir == NULL) {
-		return ENOENT;
+		return SET_ERROR(ENOENT);
 	}
 
 	/* NDAT may feed us with a non directory namei_getstartdir */
 	if (startdir->v_type != VDIR) {
 		vrele(startdir);
-		return ENOTDIR;
+		return SET_ERROR(ENOTDIR);
 	}
 
 	*startdir_ret = startdir;
@@ -744,7 +745,7 @@ namei_follow(struct namei_state *state, 
 	int error;
 
 	if (ndp->ni_loopcnt++ >= MAXSYMLINKS) {
-		return ELOOP;
+		return SET_ERROR(ELOOP);
 	}
 
 	vn_lock(foundobj, LK_EXCLUSIVE | LK_RETRY);
@@ -775,7 +776,7 @@ namei_follow(struct namei_state *state, 
 	linklen = MAXPATHLEN - auio.uio_resid;
 	if (linklen == 0) {
 		PNBUF_PUT(cp);
-		return ENOENT;
+		return SET_ERROR(ENOENT);
 	}
 
 	/*
@@ -789,7 +790,7 @@ namei_follow(struct namei_state *state, 
 		symlink_magic(self->l_proc, cp, &linklen)) ||
 	    (linklen + ndp->ni_pathlen >= MAXPATHLEN)) {
 		PNBUF_PUT(cp);
-		return ENAMETOOLONG;
+		return SET_ERROR(ENAMETOOLONG);
 	}
 	if (ndp->ni_pathlen > 1) {
 		/* includes a null-terminator */
@@ -861,7 +862,7 @@ lookup_parsepath(struct namei_state *sta
 	}
 	cp = cnp->cn_nameptr + cnp->cn_namelen;
 	if (cnp->cn_namelen > KERNEL_NAME_MAX) {
-		return ENAMETOOLONG;
+		return SET_ERROR(ENAMETOOLONG);
 	}
 #ifdef NAMEI_DIAGNOSTIC
 	{ char c = *cp;
@@ -1207,7 +1208,7 @@ unionlookup:
 		 * then the name must exist.
 		 */
 		if ((cnp->cn_flags & (REQUIREDIR | CREATEDIR)) == REQUIREDIR) {
-			error = ENOENT;
+			error = SET_ERROR(ENOENT);
 			goto done;
 		}
 
@@ -1216,7 +1217,7 @@ unionlookup:
 		 * allowing file to be created.
 		 */
 		if (state->rdonly) {
-			error = EROFS;
+			error = SET_ERROR(EROFS);
 			goto done;
 		}
 
@@ -1307,11 +1308,11 @@ lookup_fastforward(struct namei_state *s
 		if ((cnp->cn_flags & ISDOTDOT) != 0) {
 			if ((searchdir->v_vflag & VV_ROOT) != 0 &&
 			    (cnp->cn_flags & NOCROSSMOUNT)) {
-				error = EOPNOTSUPP;
+				error = SET_ERROR(EOPNOTSUPP);
 				break;
 			}
 			if (ndp->ni_rootdir != rootvnode) {
-				error = EOPNOTSUPP;
+				error = SET_ERROR(EOPNOTSUPP);
 				break;
 			}
 		}
@@ -1325,7 +1326,7 @@ lookup_fastforward(struct namei_state *s
 		if ((cnp->cn_flags & ISLASTCN) != 0) {
 			if (cnp->cn_nameiop != LOOKUP ||
 			    (cnp->cn_flags & LOCKPARENT) != 0) {
-				error = EOPNOTSUPP;
+				error = SET_ERROR(EOPNOTSUPP);
 				break;
 			}
 		}
@@ -1338,7 +1339,7 @@ lookup_fastforward(struct namei_state *s
 		 */
 		if (!cache_lookup_linked(searchdir, cnp->cn_nameptr,
 			cnp->cn_namelen, &foundobj, &plock, cnp->cn_cred)) {
-			error = EOPNOTSUPP;
+			error = SET_ERROR(EOPNOTSUPP);
 			break;
 		}
 		KASSERT(plock != NULL);
@@ -1352,9 +1353,9 @@ lookup_fastforward(struct namei_state *s
 		if (foundobj == NULL) {
 			if ((searchdir->v_vflag & VV_ROOT) != 0 &&
 			    (searchdir->v_mount->mnt_flag & MNT_UNION) != 0) {
-				error = EOPNOTSUPP;
+				error = SET_ERROR(EOPNOTSUPP);
 			} else {
-				error = ENOENT;
+				error = SET_ERROR(ENOENT);
 				terminal = ((cnp->cn_flags & ISLASTCN) != 0);
 			}
 			break;
@@ -1368,7 +1369,7 @@ lookup_fastforward(struct namei_state *s
 			error = vcache_tryvget(foundobj);
 			if (error != 0) {
 				foundobj = NULL;
-				error = EOPNOTSUPP;
+				error = SET_ERROR(EOPNOTSUPP);
 			} else {
 				terminal = (foundobj->v_type != VLNK &&
 				    (cnp->cn_flags & ISLASTCN) != 0);
@@ -1394,7 +1395,7 @@ lookup_fastforward(struct namei_state *s
 				error = vcache_tryvget(foundobj);
 				if (error != 0) {
 					foundobj = NULL;
-					error = EOPNOTSUPP;
+					error = SET_ERROR(EOPNOTSUPP);
 				}
 				break;
 			} else {
@@ -1410,7 +1411,7 @@ lookup_fastforward(struct namei_state *s
 			error = vcache_tryvget(foundobj);
 			if (error != 0) {
 				foundobj = NULL;
-				error = EOPNOTSUPP;
+				error = SET_ERROR(EOPNOTSUPP);
 			} else {
 				terminal = (foundobj->v_type != VLNK);
 			}
@@ -1454,7 +1455,7 @@ lookup_fastforward(struct namei_state *s
 			 * case of a root vnode being reclaimed while
 			 * trying to cross a mount.
 			 */
-			error2 = EOPNOTSUPP;
+			error2 = SET_ERROR(EOPNOTSUPP);
 		} else {
 			error2 = vcache_tryvget(searchdir);
 		}
@@ -1474,7 +1475,7 @@ lookup_fastforward(struct namei_state *s
 			ndp->ni_pathlen = oldpathlen;
 			error = lookup_parsepath(state, *searchdir_ret);
 			if (error == 0) {
-				error = EOPNOTSUPP;
+				error = SET_ERROR(EOPNOTSUPP);
 			}
 		}
 	} else if (plock != NULL) {
@@ -1627,7 +1628,7 @@ namei_oneroot(struct namei_state *state,
 			ndp->ni_pathlen += state->slashes;
 			ndp->ni_next -= state->slashes;
 			if (neverfollow) {
-				error = EINVAL;
+				error = SET_ERROR(EINVAL);
 			} else if (searchdir == NULL) {
 				/*
 				 * dholland 20160410: lookup_once only
@@ -1649,7 +1650,7 @@ namei_oneroot(struct namei_state *state,
 				 * NFS occasionally but even then it
 				 * means something's badly wrong.)
 				 */
-				error = ENOTDIR;
+				error = SET_ERROR(ENOTDIR);
 			} else {
 				/*
 				 * dholland 20110410: if we're at a
@@ -1715,7 +1716,7 @@ namei_oneroot(struct namei_state *state,
 			ndp->ni_dvp = NULL;
 			ndp->ni_vp = NULL;
 			state->attempt_retry = 1;
-			return ENOTDIR;
+			return SET_ERROR(ENOTDIR);
 		}
 
 		/*
@@ -1817,10 +1818,10 @@ skiploop:
 
 			switch (cnp->cn_nameiop) {
 			case CREATE:
-				return EEXIST;
+				return SET_ERROR(EEXIST);
 			case DELETE:
 			case RENAME:
-				return EBUSY;
+				return SET_ERROR(EBUSY);
 			default:
 				break;
 			}
@@ -1847,7 +1848,7 @@ skiploop:
 			ndp->ni_dvp = NULL;
 			ndp->ni_vp = NULL;
 			state->attempt_retry = 1;
-			return EROFS;
+			return SET_ERROR(EROFS);
 		}
 
 		/* Lock the leaf node if requested. */
@@ -2115,10 +2116,10 @@ lookup_for_nfsd_index(struct nameidata *
 	 * to contain a slash.
 	 */
 	if (strlen(ndp->ni_pathbuf->pb_path) > KERNEL_NAME_MAX) {
-		return ENAMETOOLONG;
+		return SET_ERROR(ENAMETOOLONG);
 	}
 	if (strchr(ndp->ni_pathbuf->pb_path, '/')) {
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 	}
 
 	ndp->ni_pathlen = strlen(ndp->ni_pathbuf->pb_path) + 1;
@@ -2221,7 +2222,7 @@ relookup(struct vnode *dvp, struct vnode
 	 * Check for read-only lookups.
 	 */
 	if (rdonly && cnp->cn_nameiop != LOOKUP) {
-		error = EROFS;
+		error = SET_ERROR(EROFS);
 		if (*vpp) {
 			vrele(*vpp);
 		}
@@ -2314,7 +2315,7 @@ nameiat_simple_kernel(struct vnode *dvp,
 
 	pb = pathbuf_create(path);
 	if (pb == NULL)
-		return ENOMEM;
+		return SET_ERROR(ENOMEM);
 
 	error = nameiat_simple(dvp, pb, sflags, vp_ret);
 

Index: src/sys/kern/vfs_mount.c
diff -u src/sys/kern/vfs_mount.c:1.109 src/sys/kern/vfs_mount.c:1.110
--- src/sys/kern/vfs_mount.c:1.109	Sat Dec  7 02:23:09 2024
+++ src/sys/kern/vfs_mount.c	Sat Dec  7 02:27:38 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_mount.c,v 1.109 2024/12/07 02:23:09 riastradh Exp $	*/
+/*	$NetBSD: vfs_mount.c,v 1.110 2024/12/07 02:27:38 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 1997-2020 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_mount.c,v 1.109 2024/12/07 02:23:09 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_mount.c,v 1.110 2024/12/07 02:27:38 riastradh Exp $");
 
 #include "veriexec.h"
 
@@ -87,6 +87,7 @@ __KERNEL_RCSID(0, "$NetBSD: vfs_mount.c,
 #include <sys/module.h>
 #include <sys/mount.h>
 #include <sys/namei.h>
+#include <sys/sdt.h>
 #include <sys/syscallargs.h>
 #include <sys/sysctl.h>
 #include <sys/systm.h>
@@ -195,13 +196,13 @@ vfs_rootmountalloc(const char *fstypenam
 			break;
 	if (vfsp == NULL) {
 		mutex_exit(&vfs_list_lock);
-		return (ENODEV);
+		return SET_ERROR(ENODEV);
 	}
 	vfsp->vfs_refcount++;
 	mutex_exit(&vfs_list_lock);
 
 	if ((mp = vfs_mountalloc(vfsp, NULL)) == NULL)
-		return ENOMEM;
+		return SET_ERROR(ENOMEM);
 	error = vfs_busy(mp);
 	KASSERT(error == 0);
 	mp->mnt_flag = MNT_RDONLY;
@@ -352,11 +353,11 @@ _vfs_busy(struct mount *mp, bool wait)
 		fstrans_start(mp);
 	} else {
 		if (fstrans_start_nowait(mp))
-			return EBUSY;
+			return SET_ERROR(EBUSY);
 	}
 	if (__predict_false((mp->mnt_iflag & IMNT_GONE) != 0)) {
 		fstrans_done(mp);
-		return ENOENT;
+		return SET_ERROR(ENOENT);
 	}
 	vfs_ref(mp);
 	return 0;
@@ -413,13 +414,13 @@ vfs_set_lowermount(struct mount *mp, str
 
 	for (depth = 0, mp2 = lowermp; mp2; depth++, mp2 = mp2->mnt_lower) {
 		if (depth == 23)
-			return EINVAL;
+			return SET_ERROR(EINVAL);
 	}
 #endif
 
 	if (lowermp) {
 		if (lowermp == dead_rootmount)
-			return ENOENT;
+			return SET_ERROR(ENOENT);
 		error = vfs_busy(lowermp);
 		if (error)
 			return error;
@@ -663,7 +664,7 @@ vflush_one(vnode_t *vp, vnode_t *skipvp,
 		return 0;
 	}
 	vrele(vp);
-	return EBUSY;
+	return SET_ERROR(EBUSY);
 }
 
 int
@@ -704,7 +705,7 @@ vflush(struct mount *mp, vnode_t *skipvp
 	if (error)
 		return error;
 	if (busy)
-		return EBUSY;
+		return SET_ERROR(EBUSY);
 	return 0;
 }
 
@@ -817,17 +818,17 @@ mount_domount(struct lwp *l, vnode_t **v
 	/* Cannot make a non-dir a mount-point (from here anyway). */
 	if (vp->v_type != VDIR) {
 		vfs_delref(vfsops);
-		return ENOTDIR;
+		return SET_ERROR(ENOTDIR);
 	}
 
 	if (flags & MNT_EXPORTED) {
 		vfs_delref(vfsops);
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 	}
 
 	if ((mp = vfs_mountalloc(vfsops, vp)) == NULL) {
 		vfs_delref(vfsops);
-		return ENOMEM;
+		return SET_ERROR(ENOMEM);
 	}
 
 	mp->mnt_stat.f_owner = kauth_cred_geteuid(l->l_cred);
@@ -870,12 +871,12 @@ mount_domount(struct lwp *l, vnode_t **v
 	}
 	if (nd.ni_vp != vp) {
 		vput(nd.ni_vp);
-		error = EINVAL;
+		error = SET_ERROR(EINVAL);
 		goto err_mounted;
 	}
 	if (vp->v_mountedhere != NULL) {
 		vput(nd.ni_vp);
-		error = EBUSY;
+		error = SET_ERROR(EBUSY);
 		goto err_mounted;
 	}
 	error = vinvalbuf(vp, V_SAVE, l->l_cred, l, 0, 0);
@@ -1271,7 +1272,7 @@ vfs_mountroot(void)
 	default:
 		printf("%s: inappropriate for root file system\n",
 		    device_xname(root_device));
-		return (ENODEV);
+		return SET_ERROR(ENODEV);
 	}
 
 	/*
@@ -1280,7 +1281,7 @@ vfs_mountroot(void)
 	 */
 	if (strcmp(rootfstype, ROOT_FSTYPE_ANY) != 0) {
 		v = vfs_getopsbyname(rootfstype);
-		error = EFTYPE;
+		error = SET_ERROR(EFTYPE);
 		if (v != NULL) {
 			if (v->vfs_mountroot != NULL) {
 				error = (v->vfs_mountroot)();
@@ -1319,7 +1320,7 @@ vfs_mountroot(void)
 		if (device_class(root_device) == DV_DISK)
 			printf(" (dev 0x%llx)", (unsigned long long)rootdev);
 		printf("\n");
-		error = EFTYPE;
+		error = SET_ERROR(EFTYPE);
 	}
 
 done:
@@ -1450,13 +1451,13 @@ vfs_mountedon(vnode_t *vp)
 	int error = 0;
 
 	if (vp->v_type != VBLK)
-		return ENOTBLK;
+		return SET_ERROR(ENOTBLK);
 	if (spec_node_getmountedfs(vp) != NULL)
-		return EBUSY;
+		return SET_ERROR(EBUSY);
 	if (spec_node_lookup_by_dev(vp->v_type, vp->v_rdev, VDEAD_NOWAIT, &vq)
 	    == 0) {
 		if (spec_node_getmountedfs(vq) != NULL)
-			error = EBUSY;
+			error = SET_ERROR(EBUSY);
 		vrele(vq);
 	}
 
@@ -1482,7 +1483,7 @@ rawdev_mounted(vnode_t *vp, vnode_t **bv
 	d_type = D_OTHER;
 
 	if (iskmemvp(vp))
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 
 	switch (vp->v_type) {
 	case VCHR: {
@@ -1524,7 +1525,7 @@ rawdev_mounted(vnode_t *vp, vnode_t **bv
 	}
 
 	if (d_type != D_DISK)
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 
 	if (bvpp != NULL)
 		*bvpp = bvp;
@@ -1535,7 +1536,7 @@ rawdev_mounted(vnode_t *vp, vnode_t **bv
 	 * XXX: if it's on a disk with any other mounted slice.
 	 */
 	if (vfs_mountedon(bvp))
-		return EBUSY;
+		return SET_ERROR(EBUSY);
 
 	return 0;
 }

Index: src/sys/kern/vfs_subr.c
diff -u src/sys/kern/vfs_subr.c:1.501 src/sys/kern/vfs_subr.c:1.502
--- src/sys/kern/vfs_subr.c:1.501	Sat Dec  7 02:11:42 2024
+++ src/sys/kern/vfs_subr.c	Sat Dec  7 02:27:38 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_subr.c,v 1.501 2024/12/07 02:11:42 riastradh Exp $	*/
+/*	$NetBSD: vfs_subr.c,v 1.502 2024/12/07 02:27:38 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 1997, 1998, 2004, 2005, 2007, 2008, 2019, 2020
@@ -69,7 +69,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_subr.c,v 1.501 2024/12/07 02:11:42 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_subr.c,v 1.502 2024/12/07 02:27:38 riastradh Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_43.h"
@@ -92,6 +92,7 @@ __KERNEL_RCSID(0, "$NetBSD: vfs_subr.c,v
 #include <sys/module.h>
 #include <sys/mount.h>
 #include <sys/namei.h>
+#include <sys/sdt.h>
 #include <sys/stat.h>
 #include <sys/syscallargs.h>
 #include <sys/sysctl.h>
@@ -214,7 +215,7 @@ vinvalbuf(struct vnode *vp, int flags, k
 	if (flags & V_SAVE) {
 		error = VOP_FSYNC(vp, cred, FSYNC_WAIT|FSYNC_RECLAIM, 0, 0);
 		if (error)
-		        return (error);
+		        return error;
 		KASSERT(LIST_EMPTY(&vp->v_dirtyblkhd));
 	}
 
@@ -228,7 +229,7 @@ restart:
 			if (error == EPASSTHROUGH)
 				goto restart;
 			mutex_exit(&bufcache_lock);
-			return (error);
+			return error;
 		}
 		brelsel(bp, BC_INVAL | BC_VFLUSH);
 	}
@@ -241,7 +242,7 @@ restart:
 			if (error == EPASSTHROUGH)
 				goto restart;
 			mutex_exit(&bufcache_lock);
-			return (error);
+			return error;
 		}
 		/*
 		 * XXX Since there are no node locks for NFS, I believe
@@ -268,7 +269,7 @@ restart:
 
 	mutex_exit(&bufcache_lock);
 
-	return (0);
+	return 0;
 }
 
 /*
@@ -302,7 +303,7 @@ restart:
 			if (error == EPASSTHROUGH)
 				goto restart;
 			mutex_exit(&bufcache_lock);
-			return (error);
+			return error;
 		}
 		brelsel(bp, BC_INVAL | BC_VFLUSH);
 	}
@@ -317,13 +318,13 @@ restart:
 			if (error == EPASSTHROUGH)
 				goto restart;
 			mutex_exit(&bufcache_lock);
-			return (error);
+			return error;
 		}
 		brelsel(bp, BC_INVAL | BC_VFLUSH);
 	}
 	mutex_exit(&bufcache_lock);
 
-	return (0);
+	return 0;
 }
 
 /*
@@ -1000,9 +1001,9 @@ sysctl_vfs_generic_fstypes(SYSCTLFN_ARGS
 	int error, first;
 
 	if (newp != NULL)
-		return (EPERM);
+		return SET_ERROR(EPERM);
 	if (namelen != 0)
-		return (EINVAL);
+		return SET_ERROR(EINVAL);
 
 	first = 1;
 	error = 0;
@@ -1043,7 +1044,7 @@ sysctl_vfs_generic_fstypes(SYSCTLFN_ARGS
 	mutex_exit(&vfs_list_lock);
 	sysctl_relock();
 	*oldlenp = needed;
-	return (error);
+	return error;
 }
 
 int kinfo_vdebug = 1;
@@ -1069,15 +1070,15 @@ sysctl_kern_vnode(SYSCTLFN_ARGS)
 	int error;
 
 	if (namelen != 0)
-		return (EOPNOTSUPP);
+		return SET_ERROR(EOPNOTSUPP);
 	if (newp != NULL)
-		return (EPERM);
+		return SET_ERROR(EPERM);
 
 #define VPTRSZ	sizeof(vnode_t *)
 #define VNODESZ	sizeof(vnode_t)
 	if (where == NULL) {
 		*sizep = (numvnodes + KINFO_VNODESLOP) * (VPTRSZ + VNODESZ);
-		return (0);
+		return 0;
 	}
 	ewhere = where + *sizep;
 
@@ -1092,7 +1093,7 @@ sysctl_kern_vnode(SYSCTLFN_ARGS)
 				mountlist_iterator_destroy(iter);
 				sysctl_relock();
 				*sizep = bp - where;
-				return (ENOMEM);
+				return SET_ERROR(ENOMEM);
 			}
 			memcpy(&vbuf, vp, VNODESZ);
 			if ((error = copyout(&vp, bp, VPTRSZ)) ||
@@ -1101,7 +1102,7 @@ sysctl_kern_vnode(SYSCTLFN_ARGS)
 				vfs_vnode_iterator_destroy(marker);
 				mountlist_iterator_destroy(iter);
 				sysctl_relock();
-				return (error);
+				return error;
 			}
 			vrele(vp);
 			bp += VPTRSZ + VNODESZ;
@@ -1112,7 +1113,7 @@ sysctl_kern_vnode(SYSCTLFN_ARGS)
 	sysctl_relock();
 
 	*sizep = bp - where;
-	return (0);
+	return 0;
 }
 
 /*
@@ -1262,7 +1263,7 @@ vfs_getopsbyname(const char *name)
 		v->vfs_refcount++;
 	mutex_exit(&vfs_list_lock);
 
-	return (v);
+	return v;
 }
 
 void
@@ -1419,7 +1420,7 @@ vfs_unixify_accmode(accmode_t *accmode)
 	 */
 	if (*accmode & VEXPLICIT_DENY) {
 		*accmode = 0;
-		return (0);
+		return 0;
 	}
 
 	/*
@@ -1429,7 +1430,7 @@ vfs_unixify_accmode(accmode_t *accmode)
 	 * on the containing directory instead.
 	 */
 	if (*accmode & (VDELETE_CHILD | VDELETE))
-		return (EPERM);
+		return SET_ERROR(EPERM);
 
 	if (*accmode & VADMIN_PERMS) {
 		*accmode &= ~VADMIN_PERMS;
@@ -1442,7 +1443,7 @@ vfs_unixify_accmode(accmode_t *accmode)
 	 */
 	*accmode &= ~(VSTAT_PERMS | VSYNCHRONIZE);
 
-	return (0);
+	return 0;
 }
 
 time_t	rootfstime;			/* recorded root fs time, if known */

Index: src/sys/kern/vfs_trans.c
diff -u src/sys/kern/vfs_trans.c:1.72 src/sys/kern/vfs_trans.c:1.73
--- src/sys/kern/vfs_trans.c:1.72	Sat Dec  7 02:23:09 2024
+++ src/sys/kern/vfs_trans.c	Sat Dec  7 02:27:38 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_trans.c,v 1.72 2024/12/07 02:23:09 riastradh Exp $	*/
+/*	$NetBSD: vfs_trans.c,v 1.73 2024/12/07 02:27:38 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2020 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_trans.c,v 1.72 2024/12/07 02:23:09 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_trans.c,v 1.73 2024/12/07 02:27:38 riastradh Exp $");
 
 /*
  * File system transaction operations.
@@ -52,6 +52,7 @@ __KERNEL_RCSID(0, "$NetBSD: vfs_trans.c,
 #include <sys/pool.h>
 #include <sys/proc.h>
 #include <sys/pserialize.h>
+#include <sys/sdt.h>
 #include <sys/systm.h>
 #include <sys/vnode.h>
 
@@ -546,7 +547,7 @@ _fstrans_start(struct mount *mp, enum fs
 	pserialize_read_exit(s);
 
 	if (! wait)
-		return EBUSY;
+		return SET_ERROR(EBUSY);
 
 	mutex_enter(&fstrans_lock);
 	while (! grant_lock(fmi, lock_type))
@@ -702,7 +703,7 @@ fstrans_setstate(struct mount *mp, enum 
 
 	fli = fstrans_get_lwp_info(mp, true);
 	if (fli == NULL)
-		return ENOENT;
+		return SET_ERROR(ENOENT);
 	fmi = fli->fli_mountinfo;
 	old_state = fmi->fmi_state;
 	if (old_state == new_state)
@@ -768,15 +769,15 @@ vfs_suspend(struct mount *mp, int nowait
 	int error;
 
 	if (mp == dead_rootmount)
-		return EOPNOTSUPP;
+		return SET_ERROR(EOPNOTSUPP);
 
 	fli = fstrans_get_lwp_info(mp, true);
 	if (fli == NULL)
-		return ENOENT;
+		return SET_ERROR(ENOENT);
 
 	if (nowait) {
 		if (!mutex_tryenter(&vfs_suspend_lock))
-			return EWOULDBLOCK;
+			return SET_ERROR(EWOULDBLOCK);
 	} else
 		mutex_enter(&vfs_suspend_lock);
 
@@ -787,7 +788,7 @@ vfs_suspend(struct mount *mp, int nowait
 
 	if ((mp->mnt_iflag & IMNT_GONE) != 0) {
 		vfs_resume(mp);
-		return ENOENT;
+		return SET_ERROR(ENOENT);
 	}
 
 	return 0;
@@ -933,7 +934,7 @@ fscow_disestablish(struct mount *mp, int
 	fstrans_mount_dtor(fmi);
 	cow_change_done(fmi);
 
-	return hp ? 0 : EINVAL;
+	return hp ? 0 : SET_ERROR(EINVAL);
 }
 
 /*

Index: src/sys/kern/vfs_vnode.c
diff -u src/sys/kern/vfs_vnode.c:1.155 src/sys/kern/vfs_vnode.c:1.156
--- src/sys/kern/vfs_vnode.c:1.155	Sat Dec  7 02:23:09 2024
+++ src/sys/kern/vfs_vnode.c	Sat Dec  7 02:27:38 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_vnode.c,v 1.155 2024/12/07 02:23:09 riastradh Exp $	*/
+/*	$NetBSD: vfs_vnode.c,v 1.156 2024/12/07 02:27:38 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 1997-2011, 2019, 2020 The NetBSD Foundation, Inc.
@@ -148,7 +148,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_vnode.c,v 1.155 2024/12/07 02:23:09 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_vnode.c,v 1.156 2024/12/07 02:27:38 riastradh Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_pax.h"
@@ -170,6 +170,7 @@ __KERNEL_RCSID(0, "$NetBSD: vfs_vnode.c,
 #include <sys/mount.h>
 #include <sys/namei.h>
 #include <sys/pax.h>
+#include <sys/sdt.h>
 #include <sys/syscallargs.h>
 #include <sys/sysctl.h>
 #include <sys/systm.h>
@@ -1525,7 +1526,7 @@ vcache_tryvget(vnode_t *vp)
 
 	for (use = atomic_load_relaxed(&vp->v_usecount);; use = next) {
 		if (__predict_false((use & VUSECOUNT_GATE) == 0)) {
-			return EBUSY;
+			return SET_ERROR(EBUSY);
 		}
 		next = atomic_cas_uint(&vp->v_usecount,
 		    use, (use + 1) | VUSECOUNT_VGET);
@@ -1561,7 +1562,7 @@ vcache_vget(vnode_t *vp)
 			vcache_free(VNODE_TO_VIMPL(vp));
 		else
 			mutex_exit(vp->v_interlock);
-		return ENOENT;
+		return SET_ERROR(ENOENT);
 	}
 	VSTATE_ASSERT(vp, VS_LOADED);
 	error = vcache_tryvget(vp);
@@ -1781,7 +1782,7 @@ vcache_rekey_enter(struct mount *mp, str
 	vip = vcache_hash_lookup(&new_vcache_key, new_hash);
 	if (vip != NULL) {
 		vcache_dealloc(new_vip);
-		return EEXIST;
+		return SET_ERROR(EEXIST);
 	}
 	SLIST_INSERT_HEAD(&vcache_hashtab[new_hash & vcache_hashmask],
 	    new_vip, vi_hash);
@@ -2100,9 +2101,9 @@ vdead_check(struct vnode *vp, int flags)
 
 	if (VSTATE_GET(vp) == VS_RECLAIMING) {
 		KASSERT(ISSET(flags, VDEAD_NOWAIT));
-		return EBUSY;
+		return SET_ERROR(EBUSY);
 	} else if (VSTATE_GET(vp) == VS_RECLAIMED) {
-		return ENOENT;
+		return SET_ERROR(ENOENT);
 	}
 
 	return 0;
@@ -2116,7 +2117,7 @@ vfs_drainvnodes(void)
 
 	if (!vdrain_one(desiredvnodes)) {
 		mutex_exit(&vdrain_lock);
-		return EBUSY;
+		return SET_ERROR(EBUSY);
 	}
 
 	mutex_exit(&vdrain_lock);

Index: src/sys/kern/vfs_vnops.c
diff -u src/sys/kern/vfs_vnops.c:1.243 src/sys/kern/vfs_vnops.c:1.244
--- src/sys/kern/vfs_vnops.c:1.243	Sat Dec  7 02:11:43 2024
+++ src/sys/kern/vfs_vnops.c	Sat Dec  7 02:27:38 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_vnops.c,v 1.243 2024/12/07 02:11:43 riastradh Exp $	*/
+/*	$NetBSD: vfs_vnops.c,v 1.244 2024/12/07 02:27:38 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -66,7 +66,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_vnops.c,v 1.243 2024/12/07 02:11:43 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_vnops.c,v 1.244 2024/12/07 02:27:38 riastradh Exp $");
 
 #include "veriexec.h"
 
@@ -86,6 +86,7 @@ __KERNEL_RCSID(0, "$NetBSD: vfs_vnops.c,
 #include <sys/namei.h>
 #include <sys/poll.h>
 #include <sys/proc.h>
+#include <sys/sdt.h>
 #include <sys/stat.h>
 #include <sys/syslog.h>
 #include <sys/systm.h>
@@ -185,7 +186,7 @@ vn_open(struct vnode *at_dvp, struct pat
 	KASSERT((ret_domove == NULL) == (ret_fd == NULL));
 
 	if ((fmode & (O_CREAT | O_DIRECTORY)) == (O_CREAT | O_DIRECTORY))
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 
 	NDINIT(&nd, LOOKUP, nmode, pb);
 	if (at_dvp != NULL)
@@ -210,7 +211,7 @@ vn_open(struct vnode *at_dvp, struct pat
 
 	pathstring = pathbuf_stringcopy_get(nd.ni_pathbuf);
 	if (pathstring == NULL) {
-		return ENOMEM;
+		return SET_ERROR(ENOMEM);
 	}
 
 	/*
@@ -286,7 +287,7 @@ vn_open(struct vnode *at_dvp, struct pat
 			nd.ni_dvp = NULL;
 			vp = nd.ni_vp;
 			if (fmode & O_EXCL) {
-				error = EEXIST;
+				error = SET_ERROR(EEXIST);
 				goto bad;
 			}
 			fmode &= ~O_CREAT;
@@ -306,11 +307,11 @@ vn_open(struct vnode *at_dvp, struct pat
 		vp = nd.ni_vp;
 	}
 	if (vp->v_type == VSOCK) {
-		error = EOPNOTSUPP;
+		error = SET_ERROR(EOPNOTSUPP);
 		goto bad;
 	}
 	if (nd.ni_vp->v_type == VLNK) {
-		error = EFTYPE;
+		error = SET_ERROR(EFTYPE);
 		goto bad;
 	}
 
@@ -348,7 +349,7 @@ out:
 	case EMOVEFD:
 		/* if the caller isn't prepared to handle fds, fail for them */
 		if (ret_fd == NULL) {
-			error = EOPNOTSUPP;
+			error = SET_ERROR(EOPNOTSUPP);
 			break;
 		}
 		*ret_vp = NULL;
@@ -378,7 +379,7 @@ vn_writechk(struct vnode *vp)
 	 * we can't allow writing.
 	 */
 	if (vp->v_iflag & VI_TEXT)
-		return ETXTBSY;
+		return SET_ERROR(ETXTBSY);
 	return 0;
 }
 
@@ -389,13 +390,13 @@ vn_openchk(struct vnode *vp, kauth_cred_
 	int error;
 
 	if (vp->v_type == VNON || vp->v_type == VBAD)
-		return ENXIO;
+		return SET_ERROR(ENXIO);
 
 	if ((fflags & O_DIRECTORY) != 0 && vp->v_type != VDIR)
-		return ENOTDIR;
+		return SET_ERROR(ENOTDIR);
 
 	if ((fflags & O_REGULAR) != 0 && vp->v_type != VREG)
-		return EFTYPE;
+		return SET_ERROR(EFTYPE);
 
 	if ((fflags & FREAD) != 0) {
 		permbits = VREAD;
@@ -406,7 +407,7 @@ vn_openchk(struct vnode *vp, kauth_cred_
 	if ((fflags & (FWRITE | O_TRUNC)) != 0) {
 		permbits |= VWRITE;
 		if (vp->v_type == VDIR) {
-			error = EISDIR;
+			error = SET_ERROR(EISDIR);
 			goto bad;
 		}
 		error = vn_writechk(vp);
@@ -459,7 +460,7 @@ vn_marktext(struct vnode *vp)
 		KASSERT((vp->v_iflag & VI_TEXT) == 0);
 		mutex_exit(vp->v_interlock);
 		rw_exit(vp->v_uobj.vmobjlock);
-		return ETXTBSY;
+		return SET_ERROR(ETXTBSY);
 	}
 	if ((vp->v_iflag & VI_EXECMAP) == 0) {
 		cpu_count(CPU_COUNT_EXECPAGES, vp->v_uobj.uo_npages);
@@ -512,7 +513,7 @@ enforce_rlimit_fsize(struct vnode *vp, s
 		mutex_enter(&proc_lock);
 		psignal(l->l_proc, SIGXFSZ);
 		mutex_exit(&proc_lock);
-		return EFBIG;
+		return SET_ERROR(EFBIG);
 	}
 
 	return 0;
@@ -563,7 +564,7 @@ vn_rdwr(enum uio_rw rw, struct vnode *vp
 		*aresid = auio.uio_resid;
 	else
 		if (auio.uio_resid && error == 0)
-			error = EIO;
+			error = SET_ERROR(EIO);
 
 out:
 	if ((ioflg & IO_NODELOCKED) == 0) {
@@ -586,7 +587,7 @@ vn_readdir(file_t *fp, char *bf, int seg
 
 unionread:
 	if (vp->v_type != VDIR)
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 	aiov.iov_base = bf;
 	aiov.iov_len = count;
 	auio.uio_iov = &aiov;
@@ -790,7 +791,7 @@ vn_stat(struct vnode *vp, struct stat *s
 		mode |= S_IFIFO;
 		break;
 	default:
-		return EBADF;
+		return SET_ERROR(EBADF);
 	}
 	sb->st_mode = mode;
 	sb->st_nlink = va.va_nlink;
@@ -864,7 +865,7 @@ vn_ioctl(file_t *fp, u_long com, void *d
 			daddr_t *block;
 
 			if (*(daddr_t *)data < 0)
-				return EINVAL;
+				return SET_ERROR(EINVAL);
 			block = (daddr_t *)data;
 			vn_lock(vp, LK_SHARED | LK_RETRY);
 			error = VOP_BMAP(vp, *block, NULL, block, NULL);
@@ -875,7 +876,7 @@ vn_ioctl(file_t *fp, u_long com, void *d
 			daddr_t ibn, obn;
 
 			if (*(int32_t *)data < 0)
-				return EINVAL;
+				return SET_ERROR(EINVAL);
 			ibn = (daddr_t)*(int32_t *)data;
 			vn_lock(vp, LK_SHARED | LK_RETRY);
 			error = VOP_BMAP(vp, ibn, NULL, &obn, NULL);
@@ -902,7 +903,7 @@ vn_ioctl(file_t *fp, u_long com, void *d
 		return error;
 
 	default:
-		return EPASSTHROUGH;
+		return SET_ERROR(EPASSTHROUGH);
 	}
 }
 
@@ -951,19 +952,19 @@ vn_mmap(struct file *fp, off_t *offp, si
 	if (vp->v_type != VREG && vp->v_type != VCHR &&
 	    vp->v_type != VBLK) {
 		/* only REG/CHR/BLK support mmap */
-		return ENODEV;
+		return SET_ERROR(ENODEV);
 	}
 	if (vp->v_type != VCHR && off < 0) {
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 	}
 #if SIZE_MAX > UINT32_MAX	/* XXX -Wtype-limits */
 	if (vp->v_type != VCHR && size > __type_max(off_t)) {
-		return EOVERFLOW;
+		return SET_ERROR(EOVERFLOW);
 	}
 #endif
 	if (vp->v_type != VCHR && off > __type_max(off_t) - size) {
 		/* no offset wrapping */
-		return EOVERFLOW;
+		return SET_ERROR(EOVERFLOW);
 	}
 
 	/* special case: catch SunOS style /dev/zero */
@@ -1012,7 +1013,7 @@ vn_mmap(struct file *fp, off_t *offp, si
 	if (fp->f_flag & FREAD)
 		maxprot |= VM_PROT_READ;
 	else if (prot & PROT_READ) {
-		return EACCES;
+		return SET_ERROR(EACCES);
 	}
 
 	/* check write access, shared case first */
@@ -1034,10 +1035,10 @@ vn_mmap(struct file *fp, off_t *offp, si
 				(SF_SNAPSHOT|IMMUTABLE|APPEND)) == 0)
 				maxprot |= VM_PROT_WRITE;
 			else if (prot & PROT_WRITE) {
-				return EPERM;
+				return SET_ERROR(EPERM);
 			}
 		} else if (prot & PROT_WRITE) {
-			return EACCES;
+			return SET_ERROR(EACCES);
 		}
 	} else {
 		/* MAP_PRIVATE mappings can always write to */
@@ -1050,7 +1051,7 @@ vn_mmap(struct file *fp, off_t *offp, si
 	 */
 	if ((prot & PROT_EXEC) != 0 &&
 	    (vp->v_mount->mnt_flag & MNT_NOEXEC) != 0) {
-		return EACCES;
+		return SET_ERROR(EACCES);
 	}
 
 	if (vp->v_type != VCHR) {
@@ -1083,7 +1084,7 @@ vn_mmap(struct file *fp, off_t *offp, si
 			i--;
 		} while ((uobj == NULL) && (i > 0));
 		if (uobj == NULL) {
-			return EINVAL;
+			return SET_ERROR(EINVAL);
 		}
 		*advicep = UVM_ADV_RANDOM;
 	}
@@ -1128,7 +1129,7 @@ vn_mmap(struct file *fp, off_t *offp, si
 		 * indirectly execute the file.
 		 */
 		if (prot & VM_PROT_EXECUTE) {
-			return EPERM;
+			return SET_ERROR(EPERM);
 		}
 
 		/*
@@ -1158,7 +1159,7 @@ vn_seek(struct file *fp, off_t delta, in
 	int error;
 
 	if (vp->v_type == VFIFO)
-		return ESPIPE;
+		return SET_ERROR(ESPIPE);
 
 	if (flags & FOF_UPDATE_OFFSET)
 		vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
@@ -1201,7 +1202,7 @@ vn_seek(struct file *fp, off_t delta, in
 		newoff = delta;
 		break;
 	default:
-		error = EINVAL;
+		error = SET_ERROR(EINVAL);
 		goto out;
 	}
 
@@ -1257,14 +1258,14 @@ vn_posix_fadvise(struct file *fp, off_t 
 	int error;
 
 	if (offset < 0) {
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 	}
 	if (len == 0) {
 		endoffset = OFF_MAX;
 	} else if (len > 0 && (OFF_MAX - offset) >= len) {
 		endoffset = offset + len;
 	} else {
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 	}
 
 	CTASSERT(POSIX_FADV_NORMAL == UVM_ADV_NORMAL);
@@ -1321,7 +1322,7 @@ vn_posix_fadvise(struct file *fp, off_t 
 		error = 0;
 		break;
 	default:
-		error = EINVAL;
+		error = SET_ERROR(EINVAL);
 		break;
 	}
 
@@ -1336,14 +1337,14 @@ vn_truncate(file_t *fp, off_t length)
 	int error = 0;
 
 	if (length < 0)
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 
 	if ((fp->f_flag & FWRITE) == 0)
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 	vp = fp->f_vnode;
 	vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
 	if (vp->v_type == VDIR)
-		error = EISDIR;
+		error = SET_ERROR(EISDIR);
 	else if ((error = vn_writechk(vp)) == 0) {
 		vattr_null(&vattr);
 		vattr.va_size = length;
@@ -1562,7 +1563,7 @@ vn_bdev_openpath(struct pathbuf *pb, str
 	(void) vn_close(vp, FREAD | FWRITE, l->l_cred);
 
 	if (vt != VBLK)
-		return ENOTBLK;
+		return SET_ERROR(ENOTBLK);
 
 	return vn_bdev_open(dev, vpp, l);
 }

Index: src/sys/kern/vfs_wapbl.c
diff -u src/sys/kern/vfs_wapbl.c:1.115 src/sys/kern/vfs_wapbl.c:1.116
--- src/sys/kern/vfs_wapbl.c:1.115	Sat Dec  7 02:23:09 2024
+++ src/sys/kern/vfs_wapbl.c	Sat Dec  7 02:27:38 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_wapbl.c,v 1.115 2024/12/07 02:23:09 riastradh Exp $	*/
+/*	$NetBSD: vfs_wapbl.c,v 1.116 2024/12/07 02:27:38 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2003, 2008, 2009 The NetBSD Foundation, Inc.
@@ -36,7 +36,7 @@
 #define WAPBL_INTERNAL
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_wapbl.c,v 1.115 2024/12/07 02:23:09 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_wapbl.c,v 1.116 2024/12/07 02:27:38 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -60,6 +60,7 @@ __KERNEL_RCSID(0, "$NetBSD: vfs_wapbl.c,
 #include <sys/namei.h>
 #include <sys/proc.h>
 #include <sys/resourcevar.h>
+#include <sys/sdt.h>
 #include <sys/sysctl.h>
 #include <sys/uio.h>
 #include <sys/vnode.h>
@@ -519,16 +520,16 @@ wapbl_start(struct wapbl ** wlp, struct 
 		 * Not currently implemented, although it could be if
 		 * needed someday.
 		 */
-		return ENOSYS;
+		return SET_ERROR(ENOSYS);
 	}
 
 	if (off < 0)
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 
 	if (blksize < DEV_BSIZE)
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 	if (blksize % DEV_BSIZE)
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 
 	/* XXXTODO: verify that the full load is writable */
 
@@ -539,7 +540,7 @@ wapbl_start(struct wapbl ** wlp, struct 
 	 */
 	/* XXX for now pick something minimal */
 	if ((count * blksize) < MAXPHYS) {
-		return ENOSPC;
+		return SET_ERROR(ENOSPC);
 	}
 
 	if ((error = VOP_BMAP(vp, off, &devvp, &logpbn, &run)) != 0) {
@@ -856,7 +857,7 @@ wapbl_stop(struct wapbl *wl, int force)
 		if (force) {
 			wapbl_discard(wl);
 		} else {
-			return EBUSY;
+			return SET_ERROR(EBUSY);
 		}
 	}
 
@@ -1562,7 +1563,7 @@ wapbl_truncate(struct wapbl *wl, size_t 
 	if (wl->wl_reclaimable_bytes < minfree) {
 		KASSERT(wl->wl_error_count);
 		/* XXX maybe get actual error from buffer instead someday? */
-		error = EIO;
+		error = SET_ERROR(EIO);
 	}
 	head = wl->wl_head;
 	tail = wl->wl_tail;
@@ -2192,7 +2193,7 @@ wapbl_register_deallocation(struct wapbl
 
 	if (__predict_false(wl->wl_dealloccnt >= wl->wl_dealloclim)) {
 		if (!force) {
-			error = EAGAIN;
+			error = SET_ERROR(EAGAIN);
 			goto out;
 		}
 
@@ -2974,12 +2975,12 @@ wapbl_replay_start(struct wapbl_replay *
 		vp, off, count, blksize));
 
 	if (off < 0)
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 
 	if (blksize < DEV_BSIZE)
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 	if (blksize % DEV_BSIZE)
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 
 #ifdef _KERNEL
 #if 0
@@ -2987,7 +2988,7 @@ wapbl_replay_start(struct wapbl_replay *
 	 * especially root.  However, we might still want to verify
 	 * that the full load is readable */
 	if ((off + count) * blksize > vp->v_size)
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 #endif
 	if ((error = VOP_BMAP(vp, off, &devvp, &logpbn, 0)) != 0) {
 		return error;
@@ -3013,7 +3014,7 @@ wapbl_replay_start(struct wapbl_replay *
 	/* XXX verify checksums and magic numbers */
 	if (wch->wc_type != WAPBL_WC_HEADER) {
 		printf("Unrecognized wapbl magic: 0x%08x\n", wch->wc_type);
-		error = EFTYPE;
+		error = SET_ERROR(EFTYPE);
 		goto errout;
 	}
 
@@ -3240,13 +3241,13 @@ wapbl_replay_process(struct wapbl_replay
 		default:
 			printf("Unrecognized wapbl type: 0x%08x\n",
 			    wcn->wc_type);
-			error = EFTYPE;
+			error = SET_ERROR(EFTYPE);
 			goto errout;
 		}
 		wapbl_circ_advance(wr, wcn->wc_len, &saveoff);
 		if (off != saveoff) {
 			printf("wapbl_replay: corrupted records\n");
-			error = EFTYPE;
+			error = SET_ERROR(EFTYPE);
 			goto errout;
 		}
 	}
@@ -3377,7 +3378,7 @@ out:
 	wapbl_free(scratch1, MAXBSIZE);
 	wapbl_free(scratch2, MAXBSIZE);
 	if (!error && mismatchcnt)
-		error = EFTYPE;
+		error = SET_ERROR(EFTYPE);
 	return error;
 }
 #endif
@@ -3470,7 +3471,7 @@ wapbl_modcmd(modcmd_t cmd, void *arg)
 	case MODULE_CMD_FINI:
 		return wapbl_fini();
 	default:
-		return ENOTTY;
+		return SET_ERROR(ENOTTY);
 	}
 }
 

Index: src/sys/kern/vfs_xattr.c
diff -u src/sys/kern/vfs_xattr.c:1.40 src/sys/kern/vfs_xattr.c:1.41
--- src/sys/kern/vfs_xattr.c:1.40	Sat Dec  7 02:11:43 2024
+++ src/sys/kern/vfs_xattr.c	Sat Dec  7 02:27:38 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_xattr.c,v 1.40 2024/12/07 02:11:43 riastradh Exp $	*/
+/*	$NetBSD: vfs_xattr.c,v 1.41 2024/12/07 02:27:38 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2005, 2008 The NetBSD Foundation, Inc.
@@ -68,7 +68,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_xattr.c,v 1.40 2024/12/07 02:11:43 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_xattr.c,v 1.41 2024/12/07 02:27:38 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -82,6 +82,7 @@ __KERNEL_RCSID(0, "$NetBSD: vfs_xattr.c,
 #include <sys/mount.h>
 #include <sys/namei.h>
 #include <sys/proc.h>
+#include <sys/sdt.h>
 #include <sys/syscallargs.h>
 #include <sys/sysctl.h>
 #include <sys/systm.h>
@@ -133,7 +134,7 @@ vfs_stdextattrctl(struct mount *mp, int 
 
 	if (vp != NULL)
 		VOP_UNLOCK(vp);
-	return EOPNOTSUPP;
+	return SET_ERROR(EOPNOTSUPP);
 }
 
 /*
@@ -240,7 +241,7 @@ extattr_set_vp(struct vnode *vp, int att
 			break;
 		case 0:
 			if (flag & XATTR_CREATE) {
-				error = EEXIST;
+				error = SET_ERROR(EEXIST);
 				goto done;
 			}
 			break;
@@ -256,7 +257,7 @@ extattr_set_vp(struct vnode *vp, int att
 	auio.uio_iovcnt = 1;
 	auio.uio_offset = 0;
 	if (nbytes > INT_MAX) {
-		error = EINVAL;
+		error = SET_ERROR(EINVAL);
 		goto done;
 	}
 	auio.uio_resid = nbytes;
@@ -309,7 +310,7 @@ extattr_get_vp(struct vnode *vp, int att
 		auio.uio_iovcnt = 1;
 		auio.uio_offset = 0;
 		if (nbytes > INT_MAX) {
-			error = EINVAL;
+			error = SET_ERROR(EINVAL);
 			goto done;
 		}
 		auio.uio_resid = nbytes;
@@ -390,7 +391,7 @@ extattr_list_vp(struct vnode *vp, int at
 		auio.uio_iovcnt = 1;
 		auio.uio_offset = 0;
 		if (nbytes > INT_MAX) {
-			error = EINVAL;
+			error = SET_ERROR(EINVAL);
 			goto done;
 		}
 		auio.uio_resid = nbytes;
@@ -816,7 +817,7 @@ xattr_native(const char *key)
 }
 #undef MATCH_NS
 
-#define XATTR_ERRNO(e) ((e) == EOPNOTSUPP ? ENOTSUP : (e))
+#define XATTR_ERRNO(e) ((e) == EOPNOTSUPP ? SET_ERROR(ENOTSUP) : (e))
 
 int
 sys_setxattr(struct lwp *l,

Reply via email to