From: "Rafael J. Wysocki" <rafael@kernel.org>
To: Linux ACPI <linux-acpi@vger.kernel.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Mika Westerberg <mika.westerberg@linux.intel.com>
Subject: [PATCH v1 3/3] ACPI: scan: Use acpi_bus_get_primary_device()
Date: Mon, 10 Aug 2026 13:40:18 +0200 [thread overview]
Message-ID: <10906414.nUPlyArG6x@rafael.j.wysocki> (raw)
In-Reply-To: <4764923.LvFx2qVVIh@rafael.j.wysocki>
From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
The acpi_get_first_physical_node() usage in acpi_create_video_bus_device()
is generally unsafe because in theory the device returned by it may be
freed at any time.
Address this issues by using acpi_bus_get_primary_device() instead of
acpi_get_first_physical_node() and dropping the device reference
acquired by it after registering the child.
Fixes: 6ab3532b4c98 ("ACPI: video: Switch over to auxiliary bus type")
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---
drivers/acpi/scan.c | 20 +++++++++-----------
1 file changed, 9 insertions(+), 11 deletions(-)
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -2203,29 +2203,27 @@ static void acpi_create_video_bus_device
struct auxiliary_device *aux_dev;
static unsigned int aux_dev_id;
+ struct device *phys_parent __free(put_device) = acpi_bus_get_primary_device(parent);
+ if (!phys_parent)
+ return;
+
aux_dev = kzalloc_obj(*aux_dev);
if (!aux_dev)
return;
aux_dev->id = aux_dev_id++;
aux_dev->name = "video_bus";
- aux_dev->dev.parent = acpi_get_first_physical_node(parent);
- if (!aux_dev->dev.parent)
- goto err;
-
+ aux_dev->dev.parent = phys_parent;
aux_dev->dev.release = acpi_video_bus_device_release;
- if (auxiliary_device_init(aux_dev))
- goto err;
+ if (auxiliary_device_init(aux_dev)) {
+ kfree(aux_dev);
+ return;
+ }
ACPI_COMPANION_SET(&aux_dev->dev, adev);
if (__auxiliary_device_add(aux_dev, "acpi"))
auxiliary_device_uninit(aux_dev);
-
- return;
-
-err:
- kfree(aux_dev);
}
struct acpi_scan_system_dev {
next prev parent reply other threads:[~2026-08-10 11:40 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-10 11:28 [PATCH v1 0/3] ACPI: bus: Rework acquiring the primary physical for a given ACPI one Rafael J. Wysocki
2026-08-10 11:33 ` [PATCH v1 1/3] ACPI: bus: Introduce acpi_bus_get_primary_device() Rafael J. Wysocki
2026-08-10 15:43 ` Andy Shevchenko
2026-08-10 11:38 ` [PATCH v1 2/3] ACPI: platform: Use acpi_bus_get_primary_device() Rafael J. Wysocki
2026-08-10 11:40 ` Rafael J. Wysocki [this message]
2026-08-10 13:00 ` [PATCH v1 0/3] ACPI: bus: Rework acquiring the primary physical for a given ACPI one Rafael J. Wysocki (Intel)
2026-08-10 15:46 ` Andy Shevchenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=10906414.nUPlyArG6x@rafael.j.wysocki \
--to=rafael@kernel.org \
--cc=andriy.shevchenko@linux.intel.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mika.westerberg@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox