From 498496b9119d9fcd47e333d630950e4d829753a2 Mon Sep 17 00:00:00 2001
From: Quanah Gibson-Mount <quanah@openldap.org>
Date: Tue, 11 Jan 2011 20:19:14 +0000
Subject: [PATCH] ITS#6438

---
 CHANGES                           | 1 +
 servers/slapd/overlays/syncprov.c | 3 ++-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/CHANGES b/CHANGES
index 61be8684b1..28768b8374 100644
--- a/CHANGES
+++ b/CHANGES
@@ -102,6 +102,7 @@ OpenLDAP 2.4.24 Engineering
 	Fixed slapo-syncprov CSN updates to all replicas (ITS#6718)
 	Fixed slapo-syncprov sessionlog ordering (ITS#6716)
 	Fixed slapo-syncprov sessionlog with adds (ITS#6503)
+	Fixed slapo-syncprov mutex (ITS#6438)
 	Fixed slapo-translucent entry leak (ITS#6746)
 	Fixed contrib/autogroup LDAP URI with attribute filter (ITS#6536)
 	Fixed contrib/autogroup install location (ITS#6684)
diff --git a/servers/slapd/overlays/syncprov.c b/servers/slapd/overlays/syncprov.c
index 4ccc01a92c..e21747dd17 100644
--- a/servers/slapd/overlays/syncprov.c
+++ b/servers/slapd/overlays/syncprov.c
@@ -785,7 +785,8 @@ syncprov_free_syncop( syncops *so )
 	GroupAssertion *ga, *gnext;
 
 	ldap_pvt_thread_mutex_lock( &so->s_mutex );
-	if ( --so->s_inuse > 0 ) {
+	/* already being freed, or still in use */
+	if ( !so->s_inuse || --so->s_inuse > 0 ) {
 		ldap_pvt_thread_mutex_unlock( &so->s_mutex );
 		return;
 	}
-- 
GitLab