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