data built 2026-10-19T13:16:53Z

Look up another CVE · open CVE-2026-98385 in the interactive tracker

CVE-2026-98385

sched/cache: Decouple sched_cache_group from mm to fix UAF

EPSS 0.1%

Published 2026-10-12 (7 days ago) by the Linux kernel CNA. Subsystem include/linux. Debian urgency: unimportant.

What to do, per Debian release

Debian's own status for CVE-2026-98385 in every release this site tracks, and what each one means in practice. Every status below is the one the Debian Security Team publishes for this CVE. source

ReleaseStatus VersionWhat this means
Debian 12bookwormnot affected6.1.190-1Nothing to do. bookworm never shipped the vulnerable code.
Debian 13trixienot affected6.12.113-1Nothing to do. trixie never shipped the vulnerable code.
Debian 14forkyfixed7.2.9-1Update the kernel and reboot. Fixed in 7.2.9-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed7.2.9-1Update the kernel and reboot. Fixed in 7.2.9-1. A running kernel keeps the old code until the machine restarts.

The vulnerability

What the bug is

Currently the sched cache grouping is by mm and the scheduling statistics sched_cache_stat lives in the mm structure. This ties the life cycle of scheduling stats with mm. In account_mm_sched(), the scheduling stats are accessed by task->mm->sc_stat. However, a task may be switching mm on one CPU when another CPU is running account_mm_sched(), and possibly accessing the old mm that was freed. This problem was found when running tests with KASAN by Hyunwoo: https://lore.kernel.org/lkml/apPb-Dr4nPYuHQOK@v4bel/ Instead of serializing the mm access by introducing extra acquisition of rq lock in the mm free path, extract sched_cache_stat from mm_struct, rename it as sched_cache_group and manage its life cycle apart from mm_struct with its own ref counting. This allows us in the next patch access sched_cache_group directly from task, and add a refcount on sched_cache_group when a task links to it. This prevents the use after free issue when accessing stale and released old mm and its sched cache stat a task switches to a new mm while account_mm_sched() is done elsewhere. The other benefit of this restructure is in the future, the grouping of tasks to a LLC would have the flexibility to be associated with a user defined grouping, or cgroup, cookie group, numa_group or others instead of just with a single mm address space. Rename sched_cache_stat to sched_cache_group and turn it into a refcounted object allocated from mm_struct. The mm_struct now holds a pointer (sched_cache_grp) to this object instead of embedding it.

Where it lives

The fix touches these files. If the subsystem is one you do not use, the practical exposure is lower, though the package is still the vulnerable one.

include/linux/mm_types.h
include/linux/sched.h
kernel/exit.c
kernel/sched/fair.c

What this is
MEMORY MANAGEMENT - COREMAINTAINERS section matched on include/linux/mm_*.h · linux-mm@kvack.org · Maintained
Show whether Debian builds this, per release

Debian builds this code. Every release below compiles the affected file into the kernels it ships.

  • bookworm, trixie, forky, sidy
y
built into the kernel image on every flavour - only a patch removes it

From the configuration Debian publishes for every kernel flavour it builds. It covers only the architectures Debian ships a linux-config package for, and nothing about a kernel you built yourself. Debian's own status above stays authoritative about the source package.MAINTAINERS Debian linux-config packages

Signals

Published
2026-10-12 (7 days ago)source
CVSS
no vector published, unrated
Attack vector
not published
EPSS
0.14%, higher than 3.4% of all CVEssource
CISA KEV
not listedthe KEV catalogue
Debian urgency
unimportantsource
Subsystem
include/linux

Upstream fixes

The versions the CNA records as introducing and fixing this, and the commit for each. source

IntroducedFixed inCommit
7.27.2.9852ecb6bc0bc
7.27.328f9c0e0a0b9

Why the CNA scored it this way

The kernel CNA published no CVSS vector and no reasoning for CVE-2026-98385, which is why it is shown as unrated rather than given an invented score. 6,405 of the 20,413 CVEs here carry reasoning; this is not one of them.