Re: [PATCH v2 1/2] ACPI: scan: Print the offline failure message in acpi_bus_offline()

From: Rafael J. Wysocki (Intel)

Date: Wed Nov 04 2026 - 14:56:38 EST


On Thu, Oct 29, 2026 at 4:45 AM Sasha Levin <sashal@xxxxxxxxxx> wrote:
>
> When a physical node of an ACPI device being hot-removed cannot be
> offlined, acpi_bus_offline() passes the physical device back to
> acpi_scan_try_to_offline() through ret_p and the latter prints
> "Offline failed." for it after the namespace walk. By then
> physical_node_lock is not held anymore, so the device may have been
> unbound from its ACPI companion and freed in the meantime.
>
> Print the message in acpi_bus_offline() when device_offline() fails in
> the second pass, while physical_node_lock keeps the device bound to its
> ACPI companion and so the reference taken by acpi_bind_one() is still
> held. acpi_scan_try_to_offline() only needs to know that something
> could not be offlined, so pass the ACPI device back through ret_p
> instead, like in the "Offline disabled." case.
>
> Fixes: 303bfdb1a14d ("ACPI / scan: Add second pass of companion offlining to hot-remove code")
> Suggested-by: Rafael J. Wysocki <rafael@xxxxxxxxxx>
> Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>
> ---
> drivers/acpi/scan.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> index 0b17a7e519569..07d32f118631e 100644
> --- a/drivers/acpi/scan.c
> +++ b/drivers/acpi/scan.c
> @@ -165,8 +165,9 @@ static acpi_status acpi_bus_offline(acpi_handle handle, u32 lvl, void *data,
> if (ret >= 0) {
> pn->put_online = !ret;
> } else {
> - *ret_p = pn->dev;
> + *ret_p = &device->dev;
> if (second_pass) {
> + dev_warn(pn->dev, "Offline failed.\n");
> status = AE_ERROR;
> break;
> }
> @@ -235,7 +236,6 @@ static int acpi_scan_try_to_offline(struct acpi_device *device)
> (void **)&errdev);
>
> if (errdev) {
> - dev_warn(errdev, "Offline failed.\n");
> acpi_bus_online(handle, 0, NULL, NULL);
> acpi_walk_namespace(ACPI_TYPE_ANY, handle,
> ACPI_UINT32_MAX, acpi_bus_online,
> --

Applied along with the [2/2] as 7.4-rc material, thanks!