On Tue, Apr 30, 2019 at 5:52 PM Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxxxxxxxx> wrote: > > When the DSDT tables expose devices with subdevices and a set of > hierarchical _DSD properties, the data returned by > acpi_get_next_subnode() is incorrect, with the results suggesting a bad > pointer assignment. The parser works fine with device_nodes or > data_nodes, but not with a combination of the two. > > The problem is traced to an invalid pointer used when jumping from > handling device_nodes to data nodes. The existing code looks for data > nodes below the last subdevice found instead of the common root. Fix > by forcing the acpi_device pointer to be derived from the same fwnode > for the two types of subnodes. > > This same problem of handling device and data nodes was already fixed > in a similar way by 'commit bf4703fdd166 ("ACPI / property: fix data > node parsing in acpi_get_next_subnode()")' but broken later by 'commit > 34055190b19 ("ACPI / property: Add fwnode_get_next_child_node()")', so > this should probably go to linux-stable all the way to 4.12 > > Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxxxxxxxx> Applied with the Andy's R-by, but I reformatted the comment to take fewer lines of code. Thanks!