CVE-2026-80768

HID: ft260: fix stack-use-after-return write in I2C read race

State
Published
Severity
Not scored
Published
Sep 4, 2026
Updated
Oct 19, 2026
Reserved
Aug 26, 2026

Read the record on cve.org

Description

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

HID: ft260: fix stack-use-after-return write in I2C read race

ft260_i2c_read() points dev->read_buf at a caller-supplied buffer (often an on-stack variable), arms a completion and waits up to five seconds for the device to return the data. The HID input callback ft260_raw_event() runs in the input/IRQ path, independent of the dev->lock mutex held by the read path, and copies the device-supplied payload into dev->read_buf after a plain NULL check.

These two paths share read_buf, read_idx and read_len with no serialization. If the device delays its response until the read times out, ft260_i2c_read() resets the controller, clears read_buf and returns, unwinding the stack frame the buffer lived in. A response that arrives at that moment lets ft260_raw_event() pass the NULL check and then memcpy() the device-controlled payload into the now-freed stack location, a bounded but attacker-influenced stack-use-after-return write triggerable by malicious or malfunctioning hardware.

Add a dedicated spinlock that serializes every access to read_buf, read_idx and read_len. ft260_raw_event() now holds it across the NULL check, the memcpy and the index update, while the read path takes it when arming and when clearing the buffer, so the teardown can no longer slip between the check and the copy.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 6a82582d9fa438045191074856f47165334f2777 to before 2b907001e8a83cdb71e899fd3d77ab51e2c03f10Affected
  • 6a82582d9fa438045191074856f47165334f2777 to before 90e9298f2e4336a0e1ca7eeb173403df78056164Affected
  • 6a82582d9fa438045191074856f47165334f2777 to before 460514d46e8892189fc933a1b4433811cfa5c309Affected
  • 6a82582d9fa438045191074856f47165334f2777 to before 5aa5a1b7cc4b4bec5497ad9ef113fdfe37b232f3Affected
  • 6a82582d9fa438045191074856f47165334f2777 to before a8e1f970f9040294cfd9100c681c32af6c2aeec0Affected
  • 6a82582d9fa438045191074856f47165334f2777 to before d7ffbdc076675c84128d5b904e4d5167fe9f3a7fAffected
  • 6a82582d9fa438045191074856f47165334f2777 to before 77832d8f1c81d9f84b6b54807fb278586001d754Affected
  • 6a82582d9fa438045191074856f47165334f2777 to before bf3e39df3a397fd82967a31d17c4e02c7feab221Affected
LinuxLinux
  • 5.13Affected
  • before 5.13Not affected
  • 5.15.220 through 5.15.*Not affected
  • 6.1.187 through 6.1.*Not affected
  • 6.6.156 through 6.6.*Not affected
  • 6.12.108 through 6.12.*Not affected
  • 6.18.49 through 6.18.*Not affected
  • 7.1.11 through 7.1.*Not affected
  • 7.2.1 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.