The documentation for dev_read_u32_array says the return value is an errno, but fdtdec_get_int_array returns FDT_ERRs. Convert the return values so callers can handle errors properly.
Signed-off-by: Sean Anderson <sean...@gmail.com> --- drivers/core/ofnode.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c index 7a5f4c0a73..c071b968d5 100644 --- a/drivers/core/ofnode.c +++ b/drivers/core/ofnode.c @@ -220,9 +220,18 @@ int ofnode_read_u32_array(ofnode node, const char *propname, return of_read_u32_array(ofnode_to_np(node), propname, out_values, sz); } else { - return fdtdec_get_int_array(gd->fdt_blob, - ofnode_to_offset(node), propname, - out_values, sz); + int err = fdtdec_get_int_array(gd->fdt_blob, + ofnode_to_offset(node), propname, + out_values, sz); + + switch (err) { + case FDT_ERR_NOTFOUND: + return -EINVAL; + case FDT_ERR_BADLAYOUT: + return -EOVERFLOW; + default: + return 0; + } } } -- 2.29.2