Message ID | 20220824115956.1971171-1-sakari.ailus@linux.intel.com |
---|---|
State | Accepted |
Commit | 2ea3b19792dbe32287b0c48f3ff7e866f61967c7 |
Headers | show |
Series | [1/1] ACPI: property: Ignore already existing data node tags | expand |
On Wed, Aug 24, 2022 at 2:00 PM Sakari Ailus <sakari.ailus@linux.intel.com> wrote: > > ACPI node pointers are attached to data node handles, in order to resolve > string references to them. _DSD guide allows the same node to be reached > from multiple parent nodes, leading the node enumeration algorithm to each > such nodes more than once. As attached data already already exists, > attaching data with the same tag will fail. Address this problem by > ignoring nodes that have been already tagged. > > Fixes: 1d52f10917a7 ("ACPI: property: Tie data nodes to acpi handles") > Reported-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> > Tested-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> > --- > drivers/acpi/property.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/acpi/property.c b/drivers/acpi/property.c > index 7b3ad8ed2f4e6..fa97b31214a83 100644 > --- a/drivers/acpi/property.c > +++ b/drivers/acpi/property.c > @@ -370,7 +370,7 @@ static bool acpi_tie_nondev_subnodes(struct acpi_device_data *data) > bool ret; > > status = acpi_attach_data(dn->handle, acpi_nondev_subnode_tag, dn); > - if (ACPI_FAILURE(status)) { > + if (ACPI_FAILURE(status) && status != AE_ALREADY_EXISTS) { > acpi_handle_err(dn->handle, "Can't tag data node\n"); > return false; > } > -- Applied, thanks!
diff --git a/drivers/acpi/property.c b/drivers/acpi/property.c index 7b3ad8ed2f4e6..fa97b31214a83 100644 --- a/drivers/acpi/property.c +++ b/drivers/acpi/property.c @@ -370,7 +370,7 @@ static bool acpi_tie_nondev_subnodes(struct acpi_device_data *data) bool ret; status = acpi_attach_data(dn->handle, acpi_nondev_subnode_tag, dn); - if (ACPI_FAILURE(status)) { + if (ACPI_FAILURE(status) && status != AE_ALREADY_EXISTS) { acpi_handle_err(dn->handle, "Can't tag data node\n"); return false; }