Re: asus-laptop: Fn hotkeys no longer work on ThinkPad SL400 after 378500dc1313 ("platform/x86: asus-laptop: Register ACPI notify handler directly")

From: Mo Jun

Date: Sun Aug 30 2026 - 10:42:10 EST


Hi Armin Wolf,

On Sun, Aug 30, 2026 at 9:26 PM Mo Jun <royclark086@xxxxxxxxx> wrote:
>
> Hi Armin Wolf,
>
> On Sun, Aug 30, 2026 at 7:59 PM Armin Wolf <W_Armin@xxxxxx> wrote:
> >
>> [...]
> >
> > I think i found the culprit, could you please test the attached patch?
>
> Build the module with the patch(only "make -C .
> M=drivers/platform/x86") and load the built
> drivers/platform/x86/asus-laptop.ko, now the Fn hotkeys works again.

I found that after rmmod the built module, it can not be insmod again.
Also the system experienced NULL pointer dereferences in
acpi_bus_generate_netlink_event() which may related to the built
module.

I guess these was caused that the patch only change calling to
acpi_dev_install_notify_handler(), not
acpi_dev_remove_notify_handler().
After change ACPI_DEVICE_NOTIFY to ACPI_ALL_NOTIFY in calling to
acpi_dev_remove_notify_handler()(see attached patch), now the module
can be insmod again after once rmmod.

Regards,
Jun MO
--- drivers/platform/x86/asus-laptop.c.orig 2026-08-28 14:25:22.000000000 +0800
+++ drivers/platform/x86/asus-laptop.c 2026-08-30 22:20:51.478565861 +0800
@@ -1887,7 +1887,7 @@
if (result && result != -ENODEV)
goto fail_pega_rfkill;

- result = acpi_dev_install_notify_handler(device, ACPI_DEVICE_NOTIFY,
+ result = acpi_dev_install_notify_handler(device, ACPI_ALL_NOTIFY,
asus_acpi_notify, asus);
if (result)
goto fail_pega_rfkill;
@@ -1917,7 +1917,7 @@
{
struct asus_laptop *asus = platform_get_drvdata(pdev);

- acpi_dev_remove_notify_handler(asus->device, ACPI_DEVICE_NOTIFY,
+ acpi_dev_remove_notify_handler(asus->device, ACPI_ALL_NOTIFY,
asus_acpi_notify);
asus_backlight_exit(asus);
asus_rfkill_exit(asus);