diff --git a/apps/app_dial.c b/apps/app_dial.c
index f144d48ea29cff3675c833c760b6fe64ee2b0974..65f5666f2f5ddb80a6b36754fdd814fc470113fd 100644
--- a/apps/app_dial.c
+++ b/apps/app_dial.c
@@ -2409,7 +2409,8 @@ static int dial_exec_full(struct ast_channel *chan, const char *data, struct ast
 	 * datastore again, causing a crash
 	 */
 	ast_channel_lock(chan);
-	if (!ast_channel_datastore_remove(chan, datastore)) {
+	datastore = ast_channel_datastore_find(chan, &dialed_interface_info, NULL); /* make sure we weren't cleaned up already */
+	if (datastore && !ast_channel_datastore_remove(chan, datastore)) {
 		ast_datastore_free(datastore);
 	}
 	ast_channel_unlock(chan);