Re: [PATCH v2] platform/x86: dell-laptop: fix missing cleanups in init error path

From: Ilpo Järvinen

Date: Wed Jun 10 2026 - 07:47:17 EST


On Tue, 9 Jun 2026, Haoxiang Li wrote:

> dell_init() initializes several resources after dell_setup_rfkill(),
> including the optional touchpad LED, keyboard backlight LED, battery
> hook, debugfs directory and dell-laptop notifier.
>
> If a later LED or backlight registration fails, the error path only
> tears down the battery hook and rfkill resources. This leaves the
> notifier, debugfs directory, keyboard backlight LED and optional
> touchpad LED registered after dell_init() returns an error.
>
> Add the missing cleanup calls before tearing down rfkill.
>
> Fixes: 9c656b07997f ("platform/x86: dell-*: Call new led hw_changed API on kbd brightness change")

I've included also these:

Fixes: 037accfa14b2 ("dell-laptop: Add debugfs support")
Fixes: 2d8b90be4f1c ("dell-laptop: support Synaptics/Alps touchpad led")
Fixes: 6cff8d60aa0a ("platform: x86: dell-laptop: Add support for keyboard backlight")

Applied this change to my local the review-ilpo-next branch (it will
eventually appear in the public one if there are no problems).

--
i.

> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Haoxiang Li <lihaoxiang@xxxxxxxxxxxxxxxx>
> ---
> Changes in v2:
> - Fix all missing cleanups in dell_init()'s error path.
> - Add Fixes tags.
> - Modify the commit title and message.
> ---
> drivers/platform/x86/dell/dell-laptop.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/platform/x86/dell/dell-laptop.c b/drivers/platform/x86/dell/dell-laptop.c
> index 57748c3ea24f..053f40572bf6 100644
> --- a/drivers/platform/x86/dell/dell-laptop.c
> +++ b/drivers/platform/x86/dell/dell-laptop.c
> @@ -2551,7 +2551,12 @@ static int __init dell_init(void)
> if (mute_led_registered)
> led_classdev_unregister(&mute_led_cdev);
> fail_led:
> + dell_laptop_unregister_notifier(&dell_laptop_notifier);
> + debugfs_remove_recursive(dell_laptop_dir);
> dell_battery_exit();
> + kbd_led_exit();
> + if (quirks && quirks->touchpad_led)
> + touchpad_led_exit();
> dell_cleanup_rfkill();
> fail_rfkill:
> platform_device_del(platform_device);
>