Messages in this thread | | | From | "Rafael J. Wysocki" <> | Date | Wed, 10 Feb 2021 13:36:00 +0100 | Subject | Re: [PATCH v1 7/7] ACPI: property: Allow counting a single value as an array of 1 element |
| |
On Wed, Feb 10, 2021 at 12:51 PM Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote: > > We allow to read the single value as a first element in the array. > Unfortunately the counting doesn't work in this case and we can't > call fwnode_property_count_*() API without getting an error.
It would be good to mention what the symptom of the issue is here.
> Modify acpi_data_prop_read() to always try the single value read > and thus allow counting the single value as an array of 1 element. > > Reported-by: Calvin Johnson <calvin.johnson@oss.nxp.com> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
This is a bug fix, so it should go in before the cleanups in this series IMO.
Also it looks like stable@vger material.
> --- > drivers/acpi/property.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/acpi/property.c b/drivers/acpi/property.c > index 236316ee0e25..d6100585fceb 100644 > --- a/drivers/acpi/property.c > +++ b/drivers/acpi/property.c > @@ -913,12 +913,14 @@ static int acpi_data_prop_read(const struct acpi_device_data *data, > const union acpi_object *items; > int ret; > > - if (val && nval == 1) { > + /* Try to read as a single value first */ > + if (!val || nval == 1) { > ret = acpi_data_prop_read_single(data, propname, proptype, val);
This returns -EINVAL if val is NULL.
> if (ret >= 0) > - return ret; > + return val ? ret : 1;
So val cannot be NULL here.
> } > > + /* It's not the single value, get an array instead */ > ret = acpi_data_get_property_array(data, propname, ACPI_TYPE_ANY, &obj); > if (ret) > return ret; > --
To me, acpi_fwnode_property_read_string_array() needs to special-case val == NULL and nval == 0.
| |