CVE-2026-64277

Input: synaptics-rmi4 - bound the F3A keymap to the GPIO count

State
Published
Severity
7.8 High
Published
Jul 25, 2026
Updated
Oct 19, 2026
Reserved
Jul 19, 2026

Read the record on cve.org

Description

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

Input: synaptics-rmi4 - bound the F3A keymap to the GPIO count

rmi_f3a_initialize() takes the GPIO count from the device query register (f3a->gpio_count = buf & RMI_F3A_GPIO_COUNT, range 0..127). rmi_f3a_map_gpios() then allocates gpio_key_map with min(gpio_count, TRACKSTICK_RANGE_END) == at most 6 entries, but rmi_f3a_attention() iterates the full gpio_count and dereferences gpio_key_map[i], and input->keycodemax is set to the full gpio_count while input->keycode points at the 6-entry allocation.

A device that reports gpio_count > 6 therefore causes an out-of-bounds read of gpio_key_map[] on every attention interrupt, and out-of-bounds accesses through the input core's default keymap ioctls: EVIOCGKEYCODE reads past the buffer (leaking adjacent slab memory to user space) and EVIOCSKEYCODE writes a caller-controlled value past it, for any process able to open the evdev node, since input_default_getkeycode() and input_default_setkeycode() only bound the index against keycodemax.

Size the keymap for the full gpio_count. The mapping loop is unchanged: it still assigns only the first min(gpio_count, TRACKSTICK_RANGE_END) entries; the remaining slots stay KEY_RESERVED (devm_kcalloc zero-fills) and are skipped when reporting.

Scores

CVSSScoreVectorSource
3.17.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

Affected Products

ProductVersions
LinuxLinux
  • 9e4c596bfd004f447a652205163234dfd4aafa69 to before 502ad7caaa1a445b734c827fa256e5311df67e3dAffected
  • 9e4c596bfd004f447a652205163234dfd4aafa69 to before 3480e24bc4e178aaa009edb25b6ee12df199e210Affected
  • 9e4c596bfd004f447a652205163234dfd4aafa69 to before 35ed74d32d8260bdfb14a94caf402bf0866bdeecAffected
  • 9e4c596bfd004f447a652205163234dfd4aafa69 to before ba57f430328534501962d60d651e385ffd7af9caAffected
  • 9e4c596bfd004f447a652205163234dfd4aafa69 to before 850117b637bcb1dcc14be0cf09ac819a8707b42cAffected
  • 9e4c596bfd004f447a652205163234dfd4aafa69 to before 8db211aed83733073b0814adaeeab61d4521474eAffected
  • 9e4c596bfd004f447a652205163234dfd4aafa69 to before 64fb0e1161ccc6b9e48b8df61f07d3c34c01ec42Affected
  • 9e4c596bfd004f447a652205163234dfd4aafa69 to before 57c10915f2c16c90e0d46ad00876bf39ece40fc2Affected
LinuxLinux
  • 5.10Affected
  • before 5.10Not affected
  • 5.10.261 through 5.10.*Not affected
  • 5.15.212 through 5.15.*Not affected
  • 6.1.178 through 6.1.*Not affected
  • 6.6.145 through 6.6.*Not affected
  • 6.12.96 through 6.12.*Not affected
  • 6.18.39 through 6.18.*Not affected
  • 7.1.4 through 7.1.*Not affected
  • 7.2 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.