Module Name: src
Committed By: riastradh
Date: Tue Oct 17 11:55:28 UTC 2023
Modified Files:
src/sys/kern: subr_thmap.c
Log Message:
thmap(9): Test alloc failure, not THMAP_GETPTR failure.
THMAP_GETPTR may return nonnull even though alloc returned zero.
Note that this failure branch is not actually appropriate;
thmap_create should not fail. We really need to pass KM_SLEEP
through in this call site even though there are other call sites for
which KM_NOSLEEP is appropriate.
Adapted from: https://github.com/rmind/thmap/pull/14
PR kern/57666
https://github.com/rmind/thmap/issues/13
XXX pullup-10
XXX pullup-9
To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/kern/subr_thmap.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_thmap.c
diff -u src/sys/kern/subr_thmap.c:1.13 src/sys/kern/subr_thmap.c:1.14
--- src/sys/kern/subr_thmap.c:1.13 Tue Apr 11 13:06:21 2023
+++ src/sys/kern/subr_thmap.c Tue Oct 17 11:55:28 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: subr_thmap.c,v 1.13 2023/04/11 13:06:21 riastradh Exp $ */
+/* $NetBSD: subr_thmap.c,v 1.14 2023/10/17 11:55:28 riastradh Exp $ */
/*-
* Copyright (c) 2018 Mindaugas Rasiukevicius <rmind at noxt eu>
@@ -112,7 +112,7 @@
#include "utils.h"
#endif
-THMAP_RCSID("$NetBSD: subr_thmap.c,v 1.13 2023/04/11 13:06:21 riastradh Exp $");
+THMAP_RCSID("$NetBSD: subr_thmap.c,v 1.14 2023/10/17 11:55:28 riastradh Exp $");
#include <crypto/blake2/blake2s.h>
@@ -987,11 +987,11 @@ thmap_create(uintptr_t baseptr, const th
if ((thmap->flags & THMAP_SETROOT) == 0) {
/* Allocate the root level. */
root = thmap->ops->alloc(THMAP_ROOT_LEN);
- thmap->root = THMAP_GETPTR(thmap, root);
- if (!thmap->root) {
+ if (!root) {
kmem_free(thmap, sizeof(thmap_t));
return NULL;
}
+ thmap->root = THMAP_GETPTR(thmap, root);
memset(thmap->root, 0, THMAP_ROOT_LEN);
}