Print this page
6543 Fix memory leak in uu_avl_pool_destroy

Split Close
Expand all
Collapse all
          --- old/usr/src/lib/libuutil/common/uu_avl.c
          +++ new/usr/src/lib/libuutil/common/uu_avl.c
↓ open down ↓ 120 lines elided ↑ open up ↑
 121  121                          uu_panic("uu_avl_pool_destroy: Pool \"%.*s\" (%p) has "
 122  122                              "outstanding avls, or is corrupt.\n",
 123  123                              (int)sizeof (pp->uap_name), pp->uap_name,
 124  124                              (void *)pp);
 125  125                  }
 126  126          }
 127  127          (void) pthread_mutex_lock(&uu_apool_list_lock);
 128  128          pp->uap_next->uap_prev = pp->uap_prev;
 129  129          pp->uap_prev->uap_next = pp->uap_next;
 130  130          (void) pthread_mutex_unlock(&uu_apool_list_lock);
      131 +        (void) pthread_mutex_destroy(&pp->uap_lock);
 131  132          pp->uap_prev = NULL;
 132  133          pp->uap_next = NULL;
 133  134          uu_free(pp);
 134  135  }
 135  136  
 136  137  void
 137  138  uu_avl_node_init(void *base, uu_avl_node_t *np, uu_avl_pool_t *pp)
 138  139  {
 139  140          uintptr_t *na = (uintptr_t *)np;
 140  141  
↓ open down ↓ 429 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX