On Wed, Aug 24, 2022 at 2:00 PM Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> 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@xxxxxxxxxxxxxxx> > Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> > Tested-by: Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxxxxxxxx> > --- > 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!