|
Description
|
With have the following for rc_node_delete_children()
4317 static void
4318 rc_node_delete_children(rc_node_t *np, int andformer)
4319 {
4320 rc_node_t *cp;
4321
4322 again:
4323 assert(np->rn_refs > 0);
4324 assert(MUTEX_HELD(&np->rn_lock));
4325 assert(np->rn_flags & RC_NODE_DEAD);
4326
[...]
4336
4337 /*
4338 * when we drop cp's lock, all the children will be gone, so we
4339 * can release DYING_FLAGS.
4340 */
4341 rc_node_rele_flag(np, RC_NODE_DYING_FLAGS);
4342 if (andformer && (cp = np->rn_former) != NULL) {
4343 np->rn_former = NULL; /* unlink */
4344 (void) pthread_mutex_lock(&cp->rn_lock);
4345 (void) pthread_mutex_unlock(&np->rn_lock);
4346 np->rn_flags &= ~RC_NODE_ON_FORMER;
[...]
On line 4346, cp->rn_flags should be updated instead of np->rn_flags.
|