]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
ACPI: property: Fix buffer properties extraction for subnodes
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 15 Sep 2025 18:21:33 +0000 (20:21 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 16 Sep 2025 17:51:37 +0000 (19:51 +0200)
commitd0759b10989c5c5aae3d455458c9fc4e8cc694f7
treeb73deeae70bdc68263cab34465c195b930882f26
parentf83ec76bf285bea5727f478a68b894f5543ca76e
ACPI: property: Fix buffer properties extraction for subnodes

The ACPI handle passed to acpi_extract_properties() as the first
argument represents the ACPI namespace scope in which to look for
objects returning buffers associated with buffer properties.

For _DSD objects located immediately under ACPI devices, this handle is
the same as the handle of the device object holding the _DSD, but for
data-only subnodes it is not so.

First of all, data-only subnodes are represented by objects that
cannot hold other objects in their scopes (like control methods).
Therefore a data-only subnode handle cannot be used for completing
relative pathname segments, so the current code in
in acpi_nondev_subnode_extract() passing a data-only subnode handle
to acpi_extract_properties() is invalid.

Moreover, a data-only subnode of device A may be represented by an
object located in the scope of device B (which kind of makes sense,
for instance, if A is a B's child).  In that case, the scope in
question would be the one of device B.  In other words, the scope
mentioned above is the same as the scope used for subnode object
lookup in acpi_nondev_subnode_extract().

Accordingly, rearrange that function to use the same scope for the
extraction of properties and subnode object lookup.

Fixes: 103e10c69c61 ("ACPI: property: Add support for parsing buffer property UUID")
Cc: 6.0+ <stable@vger.kernel.org> # 6.0+
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Tested-by: Sakari Ailus <sakari.ailus@linux.intel.com>
drivers/acpi/property.c