* [PATCH] platform/x86: asus-wireless: Check ACPI_COMPANION() against NULL
@ 2026-07-12 15:17 Jiale Yao
2026-07-13 11:18 ` Ilpo Järvinen
0 siblings, 1 reply; 4+ messages in thread
From: Jiale Yao @ 2026-07-12 15:17 UTC (permalink / raw)
To: platform-driver-x86
Cc: corentin.chary, luke, denis.benato, jprvita, hansg,
ilpo.jarvinen, linux-kernel, Jiale Yao
Every platform driver can be forced to match a device that doesn't match
its list of device IDs because of device_match_driver_override(), so
platform drivers that rely on the existence of a device's ACPI companion
object need to verify its presence.
Accordingly, add a requisite ACPI_COMPANION() check against NULL to the
asus-wireless driver.
Signed-off-by: Jiale Yao <yaojiale02@163.com>
---
drivers/platform/x86/asus-wireless.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/platform/x86/asus-wireless.c b/drivers/platform/x86/asus-wireless.c
index 2b494bf3cba8..54052bda9061 100644
--- a/drivers/platform/x86/asus-wireless.c
+++ b/drivers/platform/x86/asus-wireless.c
@@ -132,6 +132,9 @@ static int asus_wireless_probe(struct platform_device *pdev)
const struct acpi_device_id *id;
int err;
+ if (!adev)
+ return -ENODEV;
+
data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
if (!data)
return -ENOMEM;
--
2.34.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] platform/x86: asus-wireless: Check ACPI_COMPANION() against NULL
2026-07-12 15:17 [PATCH] platform/x86: asus-wireless: Check ACPI_COMPANION() against NULL Jiale Yao
@ 2026-07-13 11:18 ` Ilpo Järvinen
0 siblings, 0 replies; 4+ messages in thread
From: Ilpo Järvinen @ 2026-07-13 11:18 UTC (permalink / raw)
To: Jiale Yao
Cc: platform-driver-x86, corentin.chary, luke, denis.benato, jprvita,
Hans de Goede, LKML
On Sun, 12 Jul 2026, Jiale Yao wrote:
You've an extra space in the subject in all of these.
Also, please send similar patches for different drivers in a series so
it's easier for me to apply them in a one go.
--
i.
> Every platform driver can be forced to match a device that doesn't match
> its list of device IDs because of device_match_driver_override(), so
> platform drivers that rely on the existence of a device's ACPI companion
> object need to verify its presence.
>
> Accordingly, add a requisite ACPI_COMPANION() check against NULL to the
> asus-wireless driver.
>
> Signed-off-by: Jiale Yao <yaojiale02@163.com>
> ---
> drivers/platform/x86/asus-wireless.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/platform/x86/asus-wireless.c b/drivers/platform/x86/asus-wireless.c
> index 2b494bf3cba8..54052bda9061 100644
> --- a/drivers/platform/x86/asus-wireless.c
> +++ b/drivers/platform/x86/asus-wireless.c
> @@ -132,6 +132,9 @@ static int asus_wireless_probe(struct platform_device *pdev)
> const struct acpi_device_id *id;
> int err;
>
> + if (!adev)
> + return -ENODEV;
> +
> data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
> if (!data)
> return -ENOMEM;
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH] platform/x86: asus-wireless: Check ACPI_COMPANION() against NULL
@ 2026-07-06 2:49 Linmao Li
2026-07-06 17:29 ` Wysocki, Rafael J
0 siblings, 1 reply; 4+ messages in thread
From: Linmao Li @ 2026-07-06 2:49 UTC (permalink / raw)
To: Corentin Chary, Luke D. Jones, Denis Benato,
João Paulo Rechi Vita, Hans de Goede, Ilpo Järvinen,
Rafael J. Wysocki
Cc: Linmao Li, platform-driver-x86, linux-kernel
Every platform driver can be forced to match a device that doesn't match
its list of device IDs because of device_match_driver_override(), so
platform drivers that rely on the existence of a device's ACPI companion
object need to verify its presence.
asus_wireless_probe() stores the result of ACPI_COMPANION() without
checking it and still succeeds when it is NULL, because
acpi_match_acpi_device() handles a NULL device gracefully. Unbinding
the driver afterwards leads to a NULL pointer dereference when
asus_wireless_remove() passes the stored NULL pointer to
acpi_dev_remove_notify_handler(), which dereferences it.
Accordingly, add a requisite ACPI_COMPANION() check against NULL to the
platform/x86 asus-wireless driver.
Fixes: f7e648027d7e ("platform/x86: asus-wireless: Convert ACPI driver to a platform one")
Signed-off-by: Linmao Li <lilinmao@kylinos.cn>
---
drivers/platform/x86/asus-wireless.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/platform/x86/asus-wireless.c b/drivers/platform/x86/asus-wireless.c
index 2b494bf3cba8..2a43d76a5d19 100644
--- a/drivers/platform/x86/asus-wireless.c
+++ b/drivers/platform/x86/asus-wireless.c
@@ -127,11 +127,15 @@ static void asus_wireless_notify(acpi_handle handle, u32 event, void *context)
static int asus_wireless_probe(struct platform_device *pdev)
{
- struct acpi_device *adev = ACPI_COMPANION(&pdev->dev);
struct asus_wireless_data *data;
const struct acpi_device_id *id;
+ struct acpi_device *adev;
int err;
+ adev = ACPI_COMPANION(&pdev->dev);
+ if (!adev)
+ return -ENODEV;
+
data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
if (!data)
return -ENOMEM;
--
2.25.1
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH] platform/x86: asus-wireless: Check ACPI_COMPANION() against NULL
2026-07-06 2:49 Linmao Li
@ 2026-07-06 17:29 ` Wysocki, Rafael J
0 siblings, 0 replies; 4+ messages in thread
From: Wysocki, Rafael J @ 2026-07-06 17:29 UTC (permalink / raw)
To: Linmao Li, Corentin Chary, Luke D. Jones, Denis Benato,
João Paulo Rechi Vita, Hans de Goede, Ilpo Järvinen
Cc: platform-driver-x86, linux-kernel
On 7/6/2026 4:49 AM, Linmao Li wrote:
> Every platform driver can be forced to match a device that doesn't match
> its list of device IDs because of device_match_driver_override(), so
> platform drivers that rely on the existence of a device's ACPI companion
> object need to verify its presence.
>
> asus_wireless_probe() stores the result of ACPI_COMPANION() without
> checking it and still succeeds when it is NULL, because
> acpi_match_acpi_device() handles a NULL device gracefully. Unbinding
> the driver afterwards leads to a NULL pointer dereference when
> asus_wireless_remove() passes the stored NULL pointer to
> acpi_dev_remove_notify_handler(), which dereferences it.
>
> Accordingly, add a requisite ACPI_COMPANION() check against NULL to the
> platform/x86 asus-wireless driver.
>
> Fixes: f7e648027d7e ("platform/x86: asus-wireless: Convert ACPI driver to a platform one")
> Signed-off-by: Linmao Li <lilinmao@kylinos.cn>
> ---
> drivers/platform/x86/asus-wireless.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/platform/x86/asus-wireless.c b/drivers/platform/x86/asus-wireless.c
> index 2b494bf3cba8..2a43d76a5d19 100644
> --- a/drivers/platform/x86/asus-wireless.c
> +++ b/drivers/platform/x86/asus-wireless.c
> @@ -127,11 +127,15 @@ static void asus_wireless_notify(acpi_handle handle, u32 event, void *context)
>
> static int asus_wireless_probe(struct platform_device *pdev)
> {
> - struct acpi_device *adev = ACPI_COMPANION(&pdev->dev);
> struct asus_wireless_data *data;
> const struct acpi_device_id *id;
> + struct acpi_device *adev;
> int err;
>
> + adev = ACPI_COMPANION(&pdev->dev);
> + if (!adev)
> + return -ENODEV;
> +
> data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
> if (!data)
> return -ENOMEM;
I'd rather make it return an error when the acpi_match_acpi_device()
call below fails. It is not very useful to return success from probe if
the driver is not going to handle the device IMV.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-07-13 11:18 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-07-12 15:17 [PATCH] platform/x86: asus-wireless: Check ACPI_COMPANION() against NULL Jiale Yao
2026-07-13 11:18 ` Ilpo Järvinen
-- strict thread matches above, loose matches on Subject: below --
2026-07-06 2:49 Linmao Li
2026-07-06 17:29 ` Wysocki, Rafael J
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®