From: Howard Chu Date: Mon, 25 Apr 2005 00:07:26 +0000 (+0000) Subject: Fix modify deadlock X-Git-Tag: OPENLDAP_AC_BP~804 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=bae2f5f083d3f409bc79ee8cca6de473a55cd6a0;p=openldap Fix modify deadlock --- diff --git a/servers/slapd/overlays/syncprov.c b/servers/slapd/overlays/syncprov.c index b736ed8982..973ec678d9 100644 --- a/servers/slapd/overlays/syncprov.c +++ b/servers/slapd/overlays/syncprov.c @@ -1080,7 +1080,6 @@ syncprov_op_cleanup( Operation *op, SlapReply *rs ) mtdummy.mt_op = op; ldap_pvt_thread_mutex_lock( &si->si_mods_mutex ); mt = avl_find( si->si_mods, &mtdummy, sp_avl_cmp ); - ldap_pvt_thread_mutex_unlock( &si->si_mods_mutex ); if ( mt ) { modinst *mi = mt->mt_mods; @@ -1091,14 +1090,13 @@ syncprov_op_cleanup( Operation *op, SlapReply *rs ) mt->mt_op = mt->mt_mods->mi_op; ldap_pvt_thread_mutex_unlock( &mt->mt_mutex ); } else { - ldap_pvt_thread_mutex_lock( &si->si_mods_mutex ); avl_delete( &si->si_mods, mt, sp_avl_cmp ); - ldap_pvt_thread_mutex_unlock( &si->si_mods_mutex ); ldap_pvt_thread_mutex_unlock( &mt->mt_mutex ); ldap_pvt_thread_mutex_destroy( &mt->mt_mutex ); ch_free( mt ); } } + ldap_pvt_thread_mutex_unlock( &si->si_mods_mutex ); if ( !BER_BVISNULL( &opc->suuid )) op->o_tmpfree( opc->suuid.bv_val, op->o_tmpmemctx ); if ( !BER_BVISNULL( &opc->sndn ))