Re: [PATCH v3 3/9] device property: add index argument to property_read_string_array() callback
From: Andy Shevchenko
Date: Fri Mar 25 2022 - 10:31:45 EST
On Fri, Mar 25, 2022 at 12:31:42PM +0100, Clément Léger wrote:
> This will allow to read a string array from a specified offset. Support
> for this new parameter has been added in both of through the use of
> of_property_read_string_array_index() and in swnode though the existing
> property_entry_read_string_array() function. ACPI support has not yet
> been added and only index == 0 is accepted.
...
> static int
> acpi_fwnode_property_read_string_array(const struct fwnode_handle *fwnode,
> const char *propname, const char **val,
> - size_t nval)
> + size_t nval, int index)
> {
> + if (index != 0)
> + return -EINVAL;
> +
> return acpi_node_prop_read(fwnode, propname, DEV_PROP_STRING,
> val, nval);
I guess it would be nice if some of us (ACPI folks) can provide a proper
prerequisite patch.
...
> - array_len = min_t(size_t, nval, array_len);
> length = array_len * sizeof(*strings);
> -
Stray change.
> pointer = property_entry_find(props, propname, length);
> if (IS_ERR(pointer))
> return PTR_ERR(pointer);
> + if (index >= array_len)
> + return -ENODATA;
I was about to ask if we can check this before the property_entry_find() call,
but realized that in such case it will shadow possible errors due to wrong or
absent property.
...
> - of_property_read_string_array(node, propname, val, nval) :
> + of_property_read_string_array_index(node, propname, val, nval,
> + index) :
Dunno about the style there, but I think it can be one line.
--
With Best Regards,
Andy Shevchenko