diff options
Diffstat (limited to 'arch/powerpc/boot/libfdt/fdt_ro.c')
| -rw-r--r-- | arch/powerpc/boot/libfdt/fdt_ro.c | 9 | 
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/powerpc/boot/libfdt/fdt_ro.c b/arch/powerpc/boot/libfdt/fdt_ro.c index 129b532bcc1..fbbba44fcd0 100644 --- a/arch/powerpc/boot/libfdt/fdt_ro.c +++ b/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,  |