aboutsummaryrefslogtreecommitdiff
path: root/sys/contrib/openzfs/lib/libuutil
diff options
context:
space:
mode:
authorMartin Matuska <mm@FreeBSD.org>2024-05-03 15:56:40 +0000
committerMartin Matuska <mm@FreeBSD.org>2024-05-03 16:05:08 +0000
commitb985c9cafd2aedac5cf92428c0211485ea4ede24 (patch)
treeaec972d5109510ea95cd2074bfcc93a1edb50573 /sys/contrib/openzfs/lib/libuutil
parent04ea5e9f84e2a62e874f7964fc94d10f454c7846 (diff)
parent8f1b7a6fa6762ea4c89198ceb11c521f80b92ddc (diff)
downloadsrc-b985c9cafd2aedac5cf92428c0211485ea4ede24.tar.gz
src-b985c9cafd2aedac5cf92428c0211485ea4ede24.zip
zfs: merge openzfs/zfs@8f1b7a6fa
Notable upstream pull request merges: #15839 c3f2f1aa2 vdev probe to slow disk can stall mmp write checker #15888 5044c4e3f Fast Dedup: ZAP Shrinking #15996 db499e68f Overflowing refreservation is bad #16118 67d13998b Make more taskq parameters writable #16128 21bc066ec Fix updating the zvol_htable when renaming a zvol #16130 645b83307 Improve write issue taskqs utilization #16131 8fd3a5d02 Slightly improve dnode hash #16134 a6edc0adb zio: try to execute TYPE_NULL ZIOs on the current task #16141 b28461b7c Fix arcstats for FreeBSD after zfetch support Obtained from: OpenZFS OpenZFS commit: 8f1b7a6fa6762ea4c89198ceb11c521f80b92ddc
Diffstat (limited to 'sys/contrib/openzfs/lib/libuutil')
-rw-r--r--sys/contrib/openzfs/lib/libuutil/uu_list.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/sys/contrib/openzfs/lib/libuutil/uu_list.c b/sys/contrib/openzfs/lib/libuutil/uu_list.c
index 0ca6f05205e9..aa8b129cc22a 100644
--- a/sys/contrib/openzfs/lib/libuutil/uu_list.c
+++ b/sys/contrib/openzfs/lib/libuutil/uu_list.c
@@ -505,14 +505,20 @@ uu_list_walk(uu_list_t *lp, uu_walk_fn_t *func, void *private, uint32_t flags)
}
if (lp->ul_debug || robust) {
- uu_list_walk_t my_walk;
+ uu_list_walk_t *my_walk;
void *e;
- list_walk_init(&my_walk, lp, flags);
+ my_walk = uu_zalloc(sizeof (*my_walk));
+ if (my_walk == NULL)
+ return (-1);
+
+ list_walk_init(my_walk, lp, flags);
while (status == UU_WALK_NEXT &&
- (e = uu_list_walk_next(&my_walk)) != NULL)
+ (e = uu_list_walk_next(my_walk)) != NULL)
status = (*func)(e, private);
- list_walk_fini(&my_walk);
+ list_walk_fini(my_walk);
+
+ uu_free(my_walk);
} else {
if (!reverse) {
for (np = lp->ul_null_node.uln_next;