Patch: slapd/back-meta mutex bugs (ITS#1704) ================ Written by Hallvard B. Furuseth and placed into the public domain. This software is not subject to any license of the University of Oslo. ================ back-meta/dncache.c:meta_dncache_delete_entry() has a lock operation which should be unlock. back-meta/init.c:meta_back_db_destroy() unlocks and destroys cache.mutex twice, but fails to unlock and destroy conn_mutex. This patch is untested. Hallvard B. Furuseth , March 2002. diff -u -r servers/slapd/back-meta/dncache.c~ servers/slapd/back-meta/dncache.c --- servers/slapd/back-meta/dncache.c~ Fri Jan 4 21:17:53 2002 +++ servers/slapd/back-meta/dncache.c Fri Mar 29 00:11:28 2002 @@ -270,7 +270,7 @@ ldap_pvt_thread_mutex_lock( &cache->mutex ); entry = avl_delete( &cache->tree, ( caddr_t )&tmp_entry, meta_dncache_cmp ); - ldap_pvt_thread_mutex_lock( &cache->mutex ); + ldap_pvt_thread_mutex_unlock( &cache->mutex ); if ( entry != NULL ) { meta_dncache_free( ( void * )entry ); diff -u -r servers/slapd/back-meta/init.c~ servers/slapd/back-meta/init.c --- servers/slapd/back-meta/init.c~ Sat Jan 5 17:50:01 2002 +++ servers/slapd/back-meta/init.c Fri Mar 29 00:18:36 2002 @@ -230,9 +230,6 @@ ( AVL_FREE )conn_free ); } - ldap_pvt_thread_mutex_unlock( &li->cache.mutex ); - ldap_pvt_thread_mutex_destroy( &li->cache.mutex ); - /* * Destroy the per-target stuff (assuming there's at * least one ...) @@ -253,7 +250,8 @@ ldap_pvt_thread_mutex_unlock( &li->cache.mutex ); ldap_pvt_thread_mutex_destroy( &li->cache.mutex ); - + ldap_pvt_thread_mutex_unlock( &li->conn_mutex ); + ldap_pvt_thread_mutex_destroy( &li->conn_mutex ); } free( be->be_private );