diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c
index c198a4d9206349e4bfe8aba6108d0dc33868bac9..8b6c0ea46698e9597b7c0041799cd4b5ade51159 100644
--- a/board/xilinx/zynqmp/zynqmp.c
+++ b/board/xilinx/zynqmp/zynqmp.c
@@ -346,6 +346,7 @@ int board_late_init(void)
 	u8 bootmode;
 	const char *mode;
 	char *new_targets;
+	char *env_targets;
 	int ret;
 
 	if (!(gd->flags & GD_FLG_ENV_DEFAULT)) {
@@ -418,10 +419,16 @@ int board_late_init(void)
 	 * One terminating char + one byte for space between mode
 	 * and default boot_targets
 	 */
-	new_targets = calloc(1, strlen(mode) +
-				strlen(env_get("boot_targets")) + 2);
+	env_targets = env_get("boot_targets");
+	if (env_targets) {
+		new_targets = calloc(1, strlen(mode) +
+				     strlen(env_targets) + 2);
+		sprintf(new_targets, "%s %s", mode, env_targets);
+	} else {
+		new_targets = calloc(1, strlen(mode) + 2);
+		sprintf(new_targets, "%s", mode);
+	}
 
-	sprintf(new_targets, "%s %s", mode, env_get("boot_targets"));
 	env_set("boot_targets", new_targets);
 
 	return 0;