diff --git a/channels/chan_unistim.c b/channels/chan_unistim.c
index 66d282b382ab4630a4c07cf4b64c71c2d8bd3650..e13cc970581a9de2db1dd6284f5950d94a6f42ca 100644
--- a/channels/chan_unistim.c
+++ b/channels/chan_unistim.c
@@ -6276,10 +6276,10 @@ static struct unistim_device *build_device(const char *cat, const struct ast_var
 		}
 		d = d->next;
 	}
+	ast_mutex_unlock(&devicelock);
 	if (!(lt = ast_calloc(1, sizeof(*lt)))) {
 		return NULL;
 	}
-	ast_mutex_unlock(&devicelock);
 	if (create) {
 		if (!(d = ast_calloc(1, sizeof(*d)))) {
 			return NULL;