of_property_read_string_array() returns number of strings read if the target array of pointers is non-NULL. fwnode_property_read_string_array() is documented to return 0 in that case. Fix this. Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> --- drivers/base/property.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/drivers/base/property.c b/drivers/base/property.c index 9224541a..e67ec24 100644 --- a/drivers/base/property.c +++ b/drivers/base/property.c @@ -544,12 +544,24 @@ static int __fwnode_property_read_string_array(struct fwnode_handle *fwnode, const char *propname, const char **val, size_t nval) { - if (is_of_node(fwnode)) - return val ? - of_property_read_string_array(to_of_node(fwnode), - propname, val, nval) : - of_property_count_strings(to_of_node(fwnode), propname); - else if (is_acpi_node(fwnode)) + if (is_of_node(fwnode)) { + int rval; + + if (!val) + return of_property_count_strings(to_of_node(fwnode), + propname); + + rval = of_property_read_string_array(to_of_node(fwnode), + propname, val, nval); + + if (rval < 0) + return rval; + + if (rval == nval) + return 0; + + return -EOVERFLOW; + } else if (is_acpi_node(fwnode)) return acpi_node_prop_read(fwnode, propname, DEV_PROP_STRING, val, nval); else if (is_pset_node(fwnode)) { -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html