[<prev] [next>] [day] [month] [year] [list]
Message-ID: <2026020428-CVE-2026-23101-47e0@gregkh>
Date: Wed, 4 Feb 2026 17:15:00 +0100
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To: linux-cve-announce@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...nel.org>
Subject: CVE-2026-23101: leds: led-class: Only Add LED to leds_list when it is fully ready
From: Greg Kroah-Hartman <gregkh@...nel.org>
Description
===========
In the Linux kernel, the following vulnerability has been resolved:
leds: led-class: Only Add LED to leds_list when it is fully ready
Before this change the LED was added to leds_list before led_init_core()
gets called adding it the list before led_classdev.set_brightness_work gets
initialized.
This leaves a window where led_trigger_register() of a LED's default
trigger will call led_trigger_set() which calls led_set_brightness()
which in turn will end up queueing the *uninitialized*
led_classdev.set_brightness_work.
This race gets hit by the lenovo-thinkpad-t14s EC driver which registers
2 LEDs with a default trigger provided by snd_ctl_led.ko in quick
succession. The first led_classdev_register() causes an async modprobe of
snd_ctl_led to run and that async modprobe manages to exactly hit
the window where the second LED is on the leds_list without led_init_core()
being called for it, resulting in:
------------[ cut here ]------------
WARNING: CPU: 11 PID: 5608 at kernel/workqueue.c:4234 __flush_work+0x344/0x390
Hardware name: LENOVO 21N2S01F0B/21N2S01F0B, BIOS N42ET93W (2.23 ) 09/01/2025
...
Call trace:
__flush_work+0x344/0x390 (P)
flush_work+0x2c/0x50
led_trigger_set+0x1c8/0x340
led_trigger_register+0x17c/0x1c0
led_trigger_register_simple+0x84/0xe8
snd_ctl_led_init+0x40/0xf88 [snd_ctl_led]
do_one_initcall+0x5c/0x318
do_init_module+0x9c/0x2b8
load_module+0x7e0/0x998
Close the race window by moving the adding of the LED to leds_list to
after the led_init_core() call.
The Linux kernel CVE team has assigned CVE-2026-23101 to this issue.
Affected and fixed versions
===========================
Issue introduced in 3.7 with commit d23a22a74fded23a12434c9463fe66cec2b0afcd and fixed in 6.6.122 with commit 2757f7748ce2d0fa44112024907bafb37e104d6e
Issue introduced in 3.7 with commit d23a22a74fded23a12434c9463fe66cec2b0afcd and fixed in 6.12.68 with commit da565bf98c9ad0eabcb09fc97859e0b52f98b7c3
Issue introduced in 3.7 with commit d23a22a74fded23a12434c9463fe66cec2b0afcd and fixed in 6.18.8 with commit 78822628165f3d817382f67f91129161159ca234
Issue introduced in 3.7 with commit d23a22a74fded23a12434c9463fe66cec2b0afcd and fixed in 6.19-rc7 with commit d1883cefd31752f0504b94c3bcfa1f6d511d6e87
Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.
Unaffected versions might change over time as fixes are backported to
older supported kernel versions. The official CVE entry at
https://cve.org/CVERecord/?id=CVE-2026-23101
will be updated if fixes are backported, please check that for the most
up to date information about this issue.
Affected files
==============
The file(s) affected by this issue are:
drivers/leds/led-class.c
Mitigation
==========
The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes. Individual
changes are never tested alone, but rather are part of a larger kernel
release. Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all. If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
https://git.kernel.org/stable/c/2757f7748ce2d0fa44112024907bafb37e104d6e
https://git.kernel.org/stable/c/da565bf98c9ad0eabcb09fc97859e0b52f98b7c3
https://git.kernel.org/stable/c/78822628165f3d817382f67f91129161159ca234
https://git.kernel.org/stable/c/d1883cefd31752f0504b94c3bcfa1f6d511d6e87
Powered by blists - more mailing lists