diff --git a/[refs] b/[refs] index 7268f51b382a..cb04bc17c383 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 210434d7633d477aa503454d68511fa2904e418e +refs/heads/master: 2dccbf4ea05d2c3603b8c1359019bf7148a316a5 diff --git a/trunk/arch/powerpc/boot/libfdt/fdt_ro.c b/trunk/arch/powerpc/boot/libfdt/fdt_ro.c index 129b532bcc1a..fbbba44fcd0d 100644 --- a/trunk/arch/powerpc/boot/libfdt/fdt_ro.c +++ b/trunk/arch/powerpc/boot/libfdt/fdt_ro.c @@ -104,8 +104,8 @@ int fdt_subnode_offset_namelen(const void *fdt, int offset, 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; @@ -114,7 +114,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,