diff options
author | bustos <none@none> | 2008-08-01 17:39:50 -0700 |
---|---|---|
committer | bustos <none@none> | 2008-08-01 17:39:50 -0700 |
commit | 6643e1ff9dc8f93c925c670fddd7a0a5b9fd4b29 (patch) | |
tree | 782c6343b20a3ed7a23d3a765460fae2cdd94ab6 /usr/src/lib/libuutil | |
parent | bb0ade0978a02d3fe0b0165cd4725fdcb593fbfb (diff) | |
download | illumos-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.c | 5 |
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; |