Module Name:    src
Committed By:   riastradh
Date:           Fri Dec  6 19:18:00 UTC 2024

Modified Files:
        src/sys/kern: subr_vmem.c

Log Message:
vmem(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.117 -r1.118 src/sys/kern/subr_vmem.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/subr_vmem.c
diff -u src/sys/kern/subr_vmem.c:1.117 src/sys/kern/subr_vmem.c:1.118
--- src/sys/kern/subr_vmem.c:1.117	Fri Dec  6 19:17:44 2024
+++ src/sys/kern/subr_vmem.c	Fri Dec  6 19:17:59 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: subr_vmem.c,v 1.117 2024/12/06 19:17:44 riastradh Exp $	*/
+/*	$NetBSD: subr_vmem.c,v 1.118 2024/12/06 19:17:59 riastradh Exp $	*/
 
 /*-
  * Copyright (c)2006,2007,2008,2009 YAMAMOTO Takashi,
@@ -46,7 +46,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: subr_vmem.c,v 1.117 2024/12/06 19:17:44 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: subr_vmem.c,v 1.118 2024/12/06 19:17:59 riastradh Exp $");
 
 #if defined(_KERNEL) && defined(_KERNEL_OPT)
 #include "opt_ddb.h"
@@ -66,6 +66,7 @@ __KERNEL_RCSID(0, "$NetBSD: subr_vmem.c,
 #include <sys/kernel.h>	/* hz */
 #include <sys/kmem.h>
 #include <sys/pool.h>
+#include <sys/sdt.h>
 #include <sys/systm.h>
 #include <sys/vmem.h>
 #include <sys/vmem_impl.h>
@@ -88,6 +89,8 @@ __KERNEL_RCSID(0, "$NetBSD: subr_vmem.c,
 #include "../sys/vmem.h"
 #include "../sys/vmem_impl.h"
 
+#define	SET_ERROR(E)	(E)
+
 #endif /* defined(_KERNEL) */
 
 #if defined(_KERNEL)
@@ -289,7 +292,7 @@ bt_refill_locked(vmem_t *vm)
 	}
 
 	if (vm->vm_nfreetags <= BT_MINRESERVE) {
-		return ENOMEM;
+		return SET_ERROR(ENOMEM);
 	}
 
 	if (kmem_meta_arena != NULL) {
@@ -754,12 +757,12 @@ vmem_add1(vmem_t *vm, vmem_addr_t addr, 
 
 	btspan = bt_alloc(vm, flags);
 	if (btspan == NULL) {
-		return ENOMEM;
+		return SET_ERROR(ENOMEM);
 	}
 	btfree = bt_alloc(vm, flags);
 	if (btfree == NULL) {
 		bt_free(vm, btspan);
-		return ENOMEM;
+		return SET_ERROR(ENOMEM);
 	}
 
 	btspan->bt_type = spanbttype;
@@ -818,7 +821,7 @@ vmem_import(vmem_t *vm, vmem_size_t size
 	VMEM_ASSERT_LOCKED(vm);
 
 	if (vm->vm_importfn == NULL) {
-		return EINVAL;
+		return SET_ERROR(EINVAL);
 	}
 
 	if (vm->vm_flags & VM_LARGEIMPORT) {
@@ -835,14 +838,14 @@ vmem_import(vmem_t *vm, vmem_size_t size
 	VMEM_LOCK(vm);
 
 	if (rc) {
-		return ENOMEM;
+		return SET_ERROR(ENOMEM);
 	}
 
 	if (vmem_add1(vm, addr, size, flags, BT_TYPE_SPAN) != 0) {
 		VMEM_UNLOCK(vm);
 		(*vm->vm_releasefn)(vm->vm_arg, addr, size);
 		VMEM_LOCK(vm);
-		return ENOMEM;
+		return SET_ERROR(ENOMEM);
 	}
 
 	return 0;
@@ -866,7 +869,7 @@ vmem_rehash(vmem_t *vm, size_t newhashsi
 	newhashlist =
 	    xmalloc(sizeof(struct vmem_hashlist) * newhashsize, flags);
 	if (newhashlist == NULL) {
-		return ENOMEM;
+		return SET_ERROR(ENOMEM);
 	}
 	for (i = 0; i < newhashsize; i++) {
 		LIST_INIT(&newhashlist[i]);
@@ -940,7 +943,7 @@ vmem_fit(const bt_t *bt, vmem_size_t siz
 		end = maxaddr;
 	}
 	if (start > end) {
-		return ENOMEM;
+		return SET_ERROR(ENOMEM);
 	}
 
 	start = VMEM_ALIGNUP(start - phase, align) + phase;
@@ -961,7 +964,7 @@ vmem_fit(const bt_t *bt, vmem_size_t siz
 		*addrp = start;
 		return 0;
 	}
-	return ENOMEM;
+	return SET_ERROR(ENOMEM);
 }
 
 /* ---- vmem API */
@@ -1140,7 +1143,7 @@ vmem_alloc(vmem_t *vm, vmem_size_t size,
 		p = pool_cache_get(qc->qc_cache, vmf_to_prf(flags));
 		if (addrp != NULL)
 			*addrp = (vmem_addr_t)p;
-		error = (p == NULL) ? ENOMEM : 0;
+		error = (p == NULL) ? SET_ERROR(ENOMEM) : 0;
 		goto out;
 	}
 #endif /* defined(QCACHE) */
@@ -1223,13 +1226,13 @@ vmem_xalloc(vmem_t *vm, const vmem_size_
 	btnew = bt_alloc(vm, flags);
 	if (btnew == NULL) {
 		VMEM_UNLOCK(vm);
-		return ENOMEM;
+		return SET_ERROR(ENOMEM);
 	}
 	btnew2 = bt_alloc(vm, flags); /* XXX not necessary if no restrictions */
 	if (btnew2 == NULL) {
 		bt_free(vm, btnew);
 		VMEM_UNLOCK(vm);
-		return ENOMEM;
+		return SET_ERROR(ENOMEM);
 	}
 
 	/*
@@ -1320,7 +1323,7 @@ fail:
 	bt_free(vm, btnew);
 	bt_free(vm, btnew2);
 	VMEM_UNLOCK(vm);
-	return ENOMEM;
+	return SET_ERROR(ENOMEM);
 
 gotit:
 	KASSERT(bt->bt_type == BT_TYPE_FREE);

Reply via email to