summaryrefslogtreecommitdiff
path: root/usr/src/lib/libuutil
diff options
context:
space:
mode:
authorbustos <none@none>2008-08-01 17:39:50 -0700
committerbustos <none@none>2008-08-01 17:39:50 -0700
commit6643e1ff9dc8f93c925c670fddd7a0a5b9fd4b29 (patch)
tree782c6343b20a3ed7a23d3a765460fae2cdd94ab6 /usr/src/lib/libuutil
parentbb0ade0978a02d3fe0b0165cd4725fdcb593fbfb (diff)
downloadillumos-joyent-6643e1ff9dc8f93c925c670fddd7a0a5b9fd4b29.tar.gz
5108427 svc.configd crashes when deletion thread Big Browns node destruction race
Diffstat (limited to 'usr/src/lib/libuutil')
-rw-r--r--usr/src/lib/libuutil/common/uu_list.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/usr/src/lib/libuutil/common/uu_list.c b/usr/src/lib/libuutil/common/uu_list.c
index f19a559362..35c7ba8001 100644
--- a/usr/src/lib/libuutil/common/uu_list.c
+++ b/usr/src/lib/libuutil/common/uu_list.c
@@ -411,6 +411,11 @@ list_walk_init(uu_list_walk_t *wp, uu_list_t *lp, uint32_t flags)
wp->ulw_next_result = lp->ul_null_node.uln_prev;
if (lp->ul_debug || robust) {
+ /*
+ * Add this walker to the list's list of walkers so
+ * uu_list_remove() can advance us if somebody tries to
+ * remove ulw_next_result.
+ */
wp->ulw_next = next = &lp->ul_null_walk;
wp->ulw_prev = prev = next->ulw_prev;
next->ulw_prev = wp;