]> git.sur5r.net Git - u-boot/commitdiff
Merge branch 'master' of git://git.denx.de/u-boot-fdt
authorWolfgang Denk <wd@denx.de>
Sat, 1 Nov 2008 15:05:51 +0000 (16:05 +0100)
committerWolfgang Denk <wd@denx.de>
Sat, 1 Nov 2008 15:05:51 +0000 (16:05 +0100)
common/fdt_support.c
libfdt/fdt_ro.c

index d483d66f11d2e8b7cb17d516927d72d4b9fd09eb..5a83bca48177d738f6d493283214ac6ca099167e 100644 (file)
@@ -602,9 +602,12 @@ int fdt_resize(void *blob)
                }
        }
 
-       /* Calculate the actual size of the fdt */
+       /*
+        * Calculate the actual size of the fdt
+        * plus the size needed for fdt_add_mem_rsv
+        */
        actualsize = fdt_off_dt_strings(blob) +
-               fdt_size_dt_strings(blob);
+               fdt_size_dt_strings(blob) + sizeof(struct fdt_reserve_entry);
 
        /* Make it so the fdt ends on a page boundary */
        actualsize = ALIGN(actualsize, 0x1000);
index b705f91ecb760cd8120589f23865d58363ff56f0..fdc9c29d2f1be93bda4de8679ab04f73d9ac4074 100644 (file)
@@ -112,12 +112,12 @@ int fdt_num_mem_rsv(const void *fdt)
 int fdt_subnode_offset_namelen(const void *fdt, int offset,
                               const char *name, int namelen)
 {
-       int depth;
+       int depth = 0;
 
        FDT_CHECK_HEADER(fdt);
 
-       for (depth = 0;
-            offset >= 0;
+       for (depth = 0, offset = fdt_next_node(fdt, offset, &depth);
+            (offset >= 0) && (depth > 0);
             offset = fdt_next_node(fdt, offset, &depth)) {
                if (depth < 0)
                        return -FDT_ERR_NOTFOUND;
@@ -126,7 +126,10 @@ int fdt_subnode_offset_namelen(const void *fdt, int offset,
                        return offset;
        }
 
-       return offset; /* error */
+       if (offset < 0)
+               return offset; /* error */
+       else
+               return -FDT_ERR_NOTFOUND;
 }
 
 int fdt_subnode_offset(const void *fdt, int parentoffset,