[PATCH v1 05/17] platform/x86: yogabook: Switch to use acpi_bus_get_primary_device()

From: Rafael J. Wysocki

Date: Mon Sep 21 2026 - 16:22:08 EST


From: "Rafael J. Wysocki" <rafael.j.wysocki@xxxxxxxxx>

Replace acpi_get_first_physical_node() that is slated for removal
with acpi_bus_get_primary_device() that takes a reference to the
device it is about to return.

This addresses a potential use-after-free that may occur if the
device returned by acpi_get_first_physical_node() is removed right
after dropping its ACPI companion's physical_node_lock in that
function.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>
---
drivers/platform/x86/lenovo/yogabook.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/platform/x86/lenovo/yogabook.c b/drivers/platform/x86/lenovo/yogabook.c
index 1a4b2ab1f35d..8a91d440724b 100644
--- a/drivers/platform/x86/lenovo/yogabook.c
+++ b/drivers/platform/x86/lenovo/yogabook.c
@@ -353,13 +353,13 @@ static int yogabook_wmi_probe(struct wmi_device *wdev, const void *context)
goto error_put_devs;
}

- data->kbd_dev = get_device(acpi_get_first_physical_node(data->kbd_adev));
+ data->kbd_dev = acpi_bus_get_primary_device(data->kbd_adev);
if (!data->kbd_dev || !data->kbd_dev->driver) {
r = -EPROBE_DEFER;
goto error_put_devs;
}

- data->dig_dev = get_device(acpi_get_first_physical_node(data->dig_adev));
+ data->dig_dev = acpi_bus_get_primary_device(data->dig_adev);
if (!data->dig_dev || !data->dig_dev->driver) {
r = -EPROBE_DEFER;
goto error_put_devs;
--
2.51.0