CVE-2026-98839

vt: selection: Fix unsigned underflow and slab-out-of-bounds read in paste_selection()

State
Published
Severity
Not scored
Published
Oct 18, 2026
Updated
Oct 19, 2026
Reserved
Sep 25, 2026

Read the record on cve.org

Description

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

vt: selection: Fix unsigned underflow and slab-out-of-bounds read in paste_selection()

In paste_selection(), the loop copies min_t(unsigned int, vc_sel.buf_len - pasted,tty->receive_room) bytes per iteration into tty_ldisc_receive_buf() and increments pasted += count.

Because the selection mutex (vc_sel.lock) is dropped inside the loop Whenever the line discipline buffer fills up and paste_selection() sleeps on tty->write_wait, a concurrent TIOCLINUX (TIOCL_SETSEL) ioctl can replace vc_sel.buffer with a shorter selection and reduce vc_sel.buf_len below pasted.

When paste_selection() resumes, vc_sel.buf_len - pasted underflows as an unsigned integer to a large positive value, causing tty_ldisc_receive_buf(ld, vc_sel.buffer + pasted, NULL, count) to read up to 4094 bytes out-of-bounds past the newly allocated vc_sel.buffer.

Fix this by terminating the loop when pasted >= vc_sel.buf_len.

Kernel stack trace (Linux 7.3.0-rc3): ================================================================== BUG: KASAN: slab-out-of-bounds in n_tty_receive_buf_common+0xa01/0x1650 Read of size 4094 at addr ffff888101c58010 by task kworker/u17:1/65 Workqueue: events_unbound flush_to_ldisc Call Trace: <TASK> dump_stack_lvl+0x70/0xa0 print_report+0x153/0x4c6 kasan_report+0xf1/0x120 kasan_check_range+0x11c/0x200 __asan_memcpy+0x29/0x70 n_tty_receive_buf_common+0xa01/0x1650 tty_ldisc_receive_buf+0x66/0x110 tty_port_default_receive_buf+0x6b/0xb0 flush_to_ldisc+0x1b4/0x410 process_one_work+0x6ff/0x1110 worker_thread+0x4a8/0xb70 kthread+0x307/0x3e0 ret_from_fork+0x3ed/0x680 </TASK> ==================================================================

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • e8c75a30a23c6ba63f4ef6895cbf41fd42f21aa2 to before 037d7e3ca5c593092f4b0d471eb869a85cbddde0Affected
  • e8c75a30a23c6ba63f4ef6895cbf41fd42f21aa2 to before 619c6d7dd76fff15a9714fbf02ce299b737f01a2Affected
  • e8c75a30a23c6ba63f4ef6895cbf41fd42f21aa2 to before 39495ef5d6f8019e62d65807f217a7ca8232727aAffected
  • 54c522782fd11a720f959ee9cb5a15bb9580343dAffected
  • 05c508edc9d0b44e4706d3c2cf14ee12aac210d2Affected
  • e5be0e24ffc7f5783a3864b5b958088ed15be9e8Affected
  • a4719f6d07b2c63223f7452c435c5f578f105cfeAffected
  • b4492f1e7456bd162714c0ec2815c2749d930844Affected
  • 9a9c13ad21a8220cb70c9807a920f43520515f94Affected
  • 8c368d36878e2fc99285279fc5e14b3d3cb8947cAffected
  • 3.16.83 to before 3.17Affected
  • 4.4.216 to before 4.5Affected
  • 4.9.216 to before 4.10Affected
  • 4.14.173 to before 4.15Affected
  • 4.19.109 to before 4.20Affected
  • 5.4.25 to before 5.5Affected
  • 5.5.9 to before 5.6Affected
LinuxLinux
  • 5.6Affected
  • before 5.6Not affected
  • 6.18.56 through 6.18.*Not affected
  • 7.2.10 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.