|
@@ -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,
|