CVE-2026-98840

CVE-2026-98840

published October 18, 2026

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

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

vc_screen: reload vc pointer before if (ret) in vcs_write() to avoid UAF

The reload of 'vc' added by commit 8fb9ea65c9d1 ("vc_screen: reload load

of struct vc_data pointer in vcs_write() to avoid UAF") sits after the

'if (ret)' block, so the copy-failure break path exits the loop without

reloading vc. If the vc was kfree()'d via vc_port_destruct during the

unlocked copy_from_user() window, the post-loop

'if (written && vc) vcs_scr_updated(vc)' is reached with a stale

non-NULL vc. The '&& vc' guard from commit a287620312dc ("vc_screen:

fix null-ptr-deref in vcs_notifier() during concurrent vcs_write") only

handles the NULL case, not this stale-non-NULL case; vcs_notifier() then

reads param->vc->vc_num from freed memory:

BUG: KASAN: slab-use-after-free in vcs_notifier+0x7c/0xd0

Read of size 2 at addr ffff888007149190

Call Trace:

vcs_notifier+0x7c/0xd0

atomic_notifier_call_chain+0x70/0xa0

vcs_scr_updated+0x77/0xa0

vcs_write+0x71b/0x7e0

Allocated by task: vc_allocate -> con_install -> tty_open

Freed by task: kfree <- vt_ioctl (VT_DISALLOCATE -> vc_port_destruct)

Move the reload to immediately after console_lock(), before 'if (ret)',

so every break path below passes a fresh vc to the post-loop

vcs_scr_updated().

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00168 · 5.7th percentile
Published
2026-10-18T20:17Z
References (5)
EPSS history
Timeline
  • 20 OCT 03:34Z
    EPSS moved — → 0%
    epss
  • 18 OCT 15:50Z
    vc_screen: reload vc pointer before if (ret) in vcs_write() to avoid UAF
    cvelistv5
  • 18 OCT 15:50Z
    vc_screen: reload vc pointer before if (ret) in vcs_write() to avoid UAF
    cvelistv5