diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index df1d0380d4affdcfe06cda3a6c93ef512781533d..90e3f8b9afe465608468a9c7629b5a6e21d809d9 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -987,6 +987,15 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
 #endif
 #endif /* CONFIG_OF_LIBFDT */
 #if defined(CONFIG_OF_FLAT_TREE)
+#ifdef CFG_BOOTMAPSZ
+	/*
+	 * The blob must be within CFG_BOOTMAPSZ,
+	 * so we flag it to be copied if it is not.
+	 */
+	if (of_flat_tree >= (char *)CFG_BOOTMAPSZ)
+		of_data = of_flat_tree;
+#endif
+
 	/* move of_flat_tree if needed */
 	if (of_data) {
 		ulong of_start, of_len;