# CVE-2026-46202: linux: In the Linux kernel, the following vulnerability has been resolved:  HID: appletb-kbd: run inactivity autodim from wo...

CVE-2026-46202 is fixed in linux on 1 platform by DEBIAN-CVE-2026-46202 (version 7.0.9-1), released June 24, 2026. It is not reported as exploited. Patch Radar priority: Routine.

- Web page: https://patchblox.com/security/cve/CVE-2026-46202
- Priority: Routine
- CVSS: 5.5 (medium)
- EPSS: 0.0013
- CISA KEV: not listed
- Exploited (vendor report): no
- Publicly disclosed: no
- Published: May 28, 2026

## Description

In the Linux kernel, the following vulnerability has been resolved:  HID: appletb-kbd: run inactivity autodim from workqueues  The autodim code in hid-appletb-kbd takes backlight_device->ops_lock via backlight_device_set_brightness() -> mutex_lock() from two different atomic contexts:   * appletb_inactivity_timer() is a struct timer_list callback, so it    runs in softirq context.  Every expiry triggers       BUG: sleeping function called from invalid context at kernel/locking/mutex.c:591      Call Trace:       <IRQ>       __might_resched       __mutex_lock       backlight_device_set_brightness       appletb_inactivity_timer       call_timer_fn       run_timer_softirq   * reset_inactivity_timer() is called from appletb_kbd_hid_event() and    appletb_kbd_inp_event().  On real USB hardware these run in    softirq/IRQ context (URB completion and input-event dispatch).    When the Touch Bar has already been dimmed or turned off, the    reset path calls backlight_device_set_brightness() directly to    restore brightness, producing the same warning.  Both call sites hit the same mutex_lock()-from-atomic bug.  Fix them together by moving the blocking work onto the system workqueue:   * Convert the inactivity timer from struct timer_list to    struct delayed_work; the callback (appletb_inactivity_work) now    runs in process context where mutex_lock() is legal.  * Add a dedicated struct work_struct restore_brightness_work and have    reset_inactivity_timer() schedule it instead of calling    backlight_device_set_brightness() directly.  Cancel both works synchronously during driver tear-down alongside the existing backlight reference drop.  The semantics are unchanged (same delays, same state transitions on dim, turn-off and user activity); only the execution context of the sleeping call changes.  The timer field and callback are renamed to match their new type; reset_inactivity_timer() keeps its name because it is invoked from input event paths that read naturally as "reset the inactivity timer".

## Where it's fixed

| Platform | Product | Fixed in | Fix | Released |
|---|---|---|---|---|
| Linux | linux Debian 14 | 7.0.9-1 | [DEBIAN-CVE-2026-46202](https://patchblox.com/security/data/fix/linux/debian-cve-2026-46202.md) | Jun 24, 2026 |

---

Data as of 2026-11-08T06:59:42Z UTC. Source: Patchblox Patch Radar (https://patchblox.com/security/patch-radar). Patchblox finds out-of-date software on Windows, macOS and Linux and updates it through release rings: https://patchblox.com/demo

Free to use with attribution: show "Data: Patchblox Patch Radar" with a link to https://patchblox.com/security/patch-radar. Terms, including what needs a written agreement: https://patchblox.com/security/patch-radar/use-the-data

Product names, logos and trademarks shown on Patch Radar belong to their respective owners. They are used only to identify the software each security fix applies to and to help readers find their platform. Their use does not imply any affiliation with, or endorsement by, those owners, and Patchblox is not affiliated with any of them.
