diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 7e137d24bdd78b0dbd1e1413797f29224248e92e..92a37170593154f25c6cb2787ddcbb3b0d2c2a0f 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -12089,10 +12089,10 @@ static int sip_park(struct ast_channel *chan1, struct ast_channel *chan2, struct
 		d->chan2 = transferer;	/* Transferer */
 		d->seqno = seqno;
 		if (!ast_pthread_create(&th, NULL, sip_park_thread, d)) {
-			free(d);
+			free(d);	/* We don't need it anymore. If thread is created, d will be free'd
+					   by sip_park_thread() */
 			return 0;
 		}
-		free(d);
 	} 
 	return -1;
 }