diff --git a/channels/chan_zap.c b/channels/chan_zap.c
index 84d4b96a3f675c95a9725ed1251b1c6d39abef68..54659903f99231b1b45224326cbad0af2e0eebbc 100644
--- a/channels/chan_zap.c
+++ b/channels/chan_zap.c
@@ -9140,6 +9140,7 @@ static void ss7_start_call(struct zt_pvt *p, struct zt_ss7 *linkset)
 
 	ast_mutex_unlock(&linkset->lock);
 	c = zt_new(p, AST_STATE_RING, 1, SUB_REAL, law, 0);
+	ast_mutex_lock(&linkset->lock);
 
 	if (!c) {
 		ast_log(LOG_WARNING, "Unable to start PBX on CIC %d\n", p->cic);
@@ -9147,8 +9148,6 @@ static void ss7_start_call(struct zt_pvt *p, struct zt_ss7 *linkset)
 	} else
 		ast_verb(3, "Accepting call to '%s' on CIC %d\n", p->exten, p->cic);
 
-	ast_mutex_lock(&linkset->lock);
-
 	zt_enable_ec(p);
 
 	if (!ast_strlen_zero(p->charge_number)) {