diff --git a/CHANGES b/CHANGES
index afe35295fb84874dd1ff4d12439bd951ff40b31e..8be3b2efb76e8353e7d5eaf5194c15b6b9444eca 100644
--- a/CHANGES
+++ b/CHANGES
@@ -12,6 +12,7 @@ OpenLDAP 2.4.17 Engineering
 	Fixed slapd normalization of updated schema attributes (ITS#5540)
 	Fixed slapd pagedresults stacked control with overlays (ITS#6056)
 	Fixed slapd sockets usage on windows (ITS#6039)
+	Fixed slapd-bdb freeing of already freed entries (ITS#6074)
 	Added slapo-rwm rwm-drop-unrequested-attrs config option (ITS#6057)
 	Fixed slapo-rwm dn passing (ITS#6070)
 	Fixed slapo-rwm entry free (ITS#6058)
diff --git a/servers/slapd/back-bdb/cache.c b/servers/slapd/back-bdb/cache.c
index e54408d65965515fb1edfc7cc499b294d8cf26f0..02f5554e22988c27b0371fce34e4c2715749739b 100644
--- a/servers/slapd/back-bdb/cache.c
+++ b/servers/slapd/back-bdb/cache.c
@@ -1345,6 +1345,9 @@ bdb_cache_delete_cleanup(
 {
 	/* Enter with ei locked */
 
+	/* already freed? */
+	if ( !ei->bei_parent ) return;
+
 	if ( ei->bei_e ) {
 		ei->bei_e->e_private = NULL;
 #ifdef SLAP_ZONE_ALLOC
@@ -1368,6 +1371,10 @@ bdb_cache_delete_internal(
 	int rc = 0;	/* return code */
 	int decr_leaf = 0;
 
+	/* already freed? */
+	if ( !e->bei_parent )
+		return -1;
+
 	/* Lock the parent's kids tree */
 	bdb_cache_entryinfo_lock( e->bei_parent );