OpenSolaris

Printable Version Enter a New Search
Bug ID 6706024
Synopsis RC_NODE_ON_FORMER flag cleared from wrong node in rc_node_delete_children()
State 10-Fix Delivered (Fix available in build)
Category:Subcategory utility:smf
Keywords rtiq_reviewed
Responsible Engineer Renaud Manus
Reported Against snv_90
Duplicate Of
Introduced In solaris_10
Commit to Fix snv_92
Fixed In snv_92
Release Fixed solaris_nevada(snv_92)
Related Bugs
Submit Date 22-May-2008
Last Update Date 18-June-2008
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.
Work Around
N/A
Comments
N/A