diff --git a/servers/slapd/overlays/accesslog.c b/servers/slapd/overlays/accesslog.c
index 32893940770871cbd205aa61d3c2ecacc50b514a..e02cf7551edd8cd3d408a34ca5514e66bf63de87 100644
--- a/servers/slapd/overlays/accesslog.c
+++ b/servers/slapd/overlays/accesslog.c
@@ -1449,11 +1449,9 @@ accesslog_op2logop( Operation *op )
 	return LOG_EN_UNKNOWN;
 }
 
-static int accesslog_mod_cleanup( Operation *op, SlapReply *rs );
-
 static int accesslog_response(Operation *op, SlapReply *rs) {
 	slap_overinst *on = (slap_overinst *)op->o_callback->sc_private;
-	log_info *li;
+	log_info *li = on->on_bi.bi_private;
 	Attribute *a, *last_attr;
 	Modifications *m;
 	struct berval *b, uuid = BER_BVNULL;
@@ -1468,9 +1466,11 @@ static int accesslog_response(Operation *op, SlapReply *rs) {
 	Operation op2 = {0};
 	SlapReply rs2 = {REP_RESULT};
 
-	if ( !on )
-		return SLAP_CB_CONTINUE;
-	li = on->on_bi.bi_private;
+	{
+		slap_callback *sc = op->o_callback;
+		op->o_callback = sc->sc_next;
+		op->o_tmpfree(sc, op->o_tmpmemctx );
+	}
 
 	if ( rs->sr_type != REP_RESULT && rs->sr_type != REP_EXTENDED )
 		return SLAP_CB_CONTINUE;
@@ -1504,13 +1504,6 @@ static int accesslog_response(Operation *op, SlapReply *rs) {
 		uuid = li->li_uuid;
 		li->li_old = NULL;
 		BER_BVZERO( &li->li_uuid );
-		/* Disarm mod_cleanup */
-		for ( cb = op->o_callback; cb; cb = cb->sc_next ) {
-			if ( cb->sc_cleanup == accesslog_mod_cleanup && cb->sc_private == (void *)on ) {
-				cb->sc_private = NULL;
-				break;
-			}
-		}
 #ifdef RMUTEX_DEBUG
 		Debug( LDAP_DEBUG_SYNC,
 			"accesslog_response: unlocking rmutex for tid %x\n",
@@ -1908,21 +1901,6 @@ accesslog_op_misc( Operation *op, SlapReply *rs )
 	return SLAP_CB_CONTINUE;
 }
 
-static int
-accesslog_mod_cleanup( Operation *op, SlapReply *rs )
-{
-	slap_callback *sc = op->o_callback;
-	slap_overinst *on = sc->sc_private;
-
-	if ( on && rs->sr_err != LDAP_SUCCESS ) {
-		accesslog_response( op, rs );
-	}
-	op->o_callback = sc->sc_next;
-	op->o_tmpfree( sc, op->o_tmpmemctx );
-
-	return 0;
-}
-
 static int
 accesslog_op_mod( Operation *op, SlapReply *rs )
 {
@@ -1952,7 +1930,7 @@ accesslog_op_mod( Operation *op, SlapReply *rs )
 			
 	if ( doit ) {
 		slap_callback *cb = op->o_tmpcalloc( 1, sizeof( slap_callback ), op->o_tmpmemctx );
-		cb->sc_cleanup = accesslog_mod_cleanup;
+		cb->sc_cleanup = accesslog_response;
 		cb->sc_response = accesslog_response;
 		cb->sc_private = on;
 		cb->sc_next = op->o_callback;