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

HID: multitouch: stop the release timer from being rearmed on remove

mt_remove() quiesces the sticky-finger timer before stopping the
hardware:

timer_delete_sync(&td->release_timer);

sysfs_remove_group(&hdev->dev.kobj, &mt_attribute_group);
hid_hw_stop(hdev);

timer_delete_sync() waits for a running callback and dequeues the timer,
but it does not stop the timer from being armed again. The transport is
still delivering reports at that point, and the report path rearms it:

if (app->quirks & MT_QUIRK_STICKY_FINGERS) {
if (td->mt_io_flags & MT_IO_SLOTS_MASK)
mod_timer(&td->release_timer,
jiffies + msecs_to_jiffies(100));

A report that arrives after timer_delete_sync() has returned therefore
leaves the timer queued. td is allocated with devm_kzalloc() against
hdev->dev, so it is freed when the driver is unbound, after mt_remove()
returns. When the timer fires afterwards, mt_expired_timeout()
dereferences the freed td:

struct mt_device *td = timer_container_of(td, t, release_timer);
struct hid_device *hdev = td->hdev;

if (test_and_set_bit_lock(MT_IO_FLAGS_RUNNING, &td->mt_io_flags))

Simply moving the teardown after hid_hw_stop() does not fix this on its
own, because mt_expired_timeout() calls mt_release_contacts(), which
walks hdev->inputs; the timer still has to be quiesced before
hid_hw_stop() tears the input devices down.

Use timer_shutdown_sync() instead, which additionally makes any later
mod_timer() a no-op, so neither ordering constraint has to be traded off
against the other. This is the final-teardown pattern the function was
introduced for, and hid-wiimote already uses it for the same reason.
Published: 2026-10-18
Score: 5.3 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Inducing use‑after‑free in the Linux kernel could enable local privilege escalation or a kernel crash.
Action: Immediate Patch
AI Analysis

Impact

The kernel driver for HID multitouch devices improperly deletes a rearmable timer when the device is removed. The timer deletion routine only waits for the current callback and does not stop future rearm calls. Subsequent HID reports reach the driver, rearm the timer, and when the timer fires after the device has been unbound the timer handler dereferences memory that has already been freed, leading to a use‑after‑free condition. In a kernel context this can corrupt memory or grant an attacker the ability to execute arbitrary code with elevated privileges.

Affected Systems

The flaw exists in the Linux kernel source code. All distributions shipping a kernel that has not yet incorporated the fix are affected, but exact affected version information is not provided in the public data.

Risk and Exploitability

The vulnerability is a classic use‑after‑free (CWE‑416) in kernel space. The CVSS score of 5.3 indicates moderate severity. Exploit complexity is low for an attacker who can interact with HID multitouch hardware. The EPSS score is less than 1%, and the flaw is not listed in the CISA KEV catalog. The attack vector is likely local, though a driver providing a USB or input interface could be used to trigger the flaw remotely if privileged access is already present. The result of exploitation can lead to kernel memory corruption, a system crash, or potential privilege escalation.

Generated by OpenCVE AI on October 22, 2026 at 21:02 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Apply a kernel update that replaces timer_delete_sync with timer_shutdown_sync in mt_remove, ensuring the timer is fully quiesced before device teardown.
  • Reboot or unload/reload the affected kernel module so that any stale timers are cleared.
  • If immediate patching is not possible, disable or remove the offending HID multitouch device to prevent the timer from being rearmed.

Generated by OpenCVE AI on October 22, 2026 at 21:02 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DLA Debian DLA DLA-4850-1 linux-6.12 security update
History

Wed, 21 Oct 2026 13:15:00 +0000


Wed, 21 Oct 2026 12:30:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

cvssV3_1

{'score': 5.3, 'vector': 'CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Moderate


Sun, 18 Oct 2026 21:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-416

Sun, 18 Oct 2026 16:00:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: HID: multitouch: stop the release timer from being rearmed on remove mt_remove() quiesces the sticky-finger timer before stopping the hardware: timer_delete_sync(&td->release_timer); sysfs_remove_group(&hdev->dev.kobj, &mt_attribute_group); hid_hw_stop(hdev); timer_delete_sync() waits for a running callback and dequeues the timer, but it does not stop the timer from being armed again. The transport is still delivering reports at that point, and the report path rearms it: if (app->quirks & MT_QUIRK_STICKY_FINGERS) { if (td->mt_io_flags & MT_IO_SLOTS_MASK) mod_timer(&td->release_timer, jiffies + msecs_to_jiffies(100)); A report that arrives after timer_delete_sync() has returned therefore leaves the timer queued. td is allocated with devm_kzalloc() against hdev->dev, so it is freed when the driver is unbound, after mt_remove() returns. When the timer fires afterwards, mt_expired_timeout() dereferences the freed td: struct mt_device *td = timer_container_of(td, t, release_timer); struct hid_device *hdev = td->hdev; if (test_and_set_bit_lock(MT_IO_FLAGS_RUNNING, &td->mt_io_flags)) Simply moving the teardown after hid_hw_stop() does not fix this on its own, because mt_expired_timeout() calls mt_release_contacts(), which walks hdev->inputs; the timer still has to be quiesced before hid_hw_stop() tears the input devices down. Use timer_shutdown_sync() instead, which additionally makes any later mod_timer() a no-op, so neither ordering constraint has to be traded off against the other. This is the final-teardown pattern the function was introduced for, and hid-wiimote already uses it for the same reason.
Title HID: multitouch: stop the release timer from being rearmed on remove
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-10-21T12:57:37.465Z

Reserved: 2026-09-25T10:25:14.376Z

Link: CVE-2026-98859

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-18T16:17:40.363

Modified: 2026-10-21T13:21:50.330

Link: CVE-2026-98859

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-10-18T15:51:20Z

Links: CVE-2026-98859 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-22T21:15:12Z

Weaknesses