CVE-2026-80766

CVE-2026-80766

published September 4, 2026

CVSS
—
EPSS
0%
Percentile
6.9
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

HID: uclogic: fix use-after-free of inrange_timer on remove

uclogic_remove() cancels the pen in-range timer and then stops the

device:

timer_delete_sync(&drvdata->inrange_timer);

hid_hw_stop(hdev);

timer_delete_sync() only guarantees the timer is idle at that instant.

uclogic_raw_event_pen() keeps delivering pen reports until hid_hw_stop()

stops the transport several lines later, and every report with

pen->inrange == UCLOGIC_PARAMS_PEN_INRANGE_NONE re-arms the timer:

mod_timer(&drvdata->inrange_timer, jiffies + msecs_to_jiffies(100));

A report landing between the timer_delete_sync() call and the transport

teardown in hid_hw_stop() re-arms inrange_timer after it was cancelled.

uclogic_remove() then returns and the devm drvdata is freed, while

hid_hw_stop() has already freed the input device drvdata->pen_input

points at, so when the timer fires ~100 ms later

uclogic_inrange_timeout() dereferences freed memory -- a use-after-free

in timer-softirq context.

Swapping the two calls is not a fix: stopping the device first frees

drvdata->pen_input via hidinput_disconnect() while the timer may still

be pending, so a timer already armed before removal fires on the freed

input device in the window before timer_delete_sync() runs.

Use timer_shutdown_sync() before hid_hw_stop() instead. It cancels the

timer, waits for a running callback while pen_input is still valid, and

prevents any further re-arming -- a later mod_timer() from an in-flight

report is silently ignored -- so the timer is provably dead before

hid_hw_stop() frees the inputs. This is the ordering the timer core

documents for this "timer re-armed from another path" teardown case.

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00177 · 6.9th percentile
Published
2026-09-04T20:18Z
References (8)
EPSS history
Timeline
  • 06 SEP 03:33Z
    EPSS moved — → 0%
    epss
  • 04 SEP 15:12Z
    HID: uclogic: fix use-after-free of inrange_timer on remove
    cvelistv5