fdt_support: correct the return condition of fdt_initrd()
authorMasahiro Yamada <yamada.m@jp.panasonic.com>
Fri, 18 Apr 2014 08:41:05 +0000 (17:41 +0900)
committerTom Rini <trini@ti.com>
Thu, 19 Jun 2014 15:18:52 +0000 (11:18 -0400)
Before this commit, fdt_initrd() just returned if initrd
start address is zero.
But it is possible if the RAM is located at address 0.

This commit makes the return condition more reasonable:
Just return if the size of initrd is zero.

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Acked-by: Simon Glass <sjg@chromium.org>
common/fdt_support.c

index 324d6b9019102be0bebbb19846f6df2507b3e737..7927a83b896988441d3358a0071c55c26c4c2bb5 100644 (file)
@@ -217,15 +217,15 @@ int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end)
        int is_u64;
        uint64_t addr, size;
 
+       /* just return if the size of initrd is zero */
+       if (initrd_start == initrd_end)
+               return 0;
+
        /* find or create "/chosen" node. */
        nodeoffset = fdt_find_or_add_subnode(fdt, 0, "chosen");
        if (nodeoffset < 0)
                return nodeoffset;
 
-       /* just return if initrd_start/end aren't valid */
-       if ((initrd_start == 0) || (initrd_end == 0))
-               return 0;
-
        total = fdt_num_mem_rsv(fdt);
 
        /*