mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [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

* 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

* [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

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®