CVE-2025-71078

Source
https://cve.org/CVERecord?id=CVE-2025-71078
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2025-71078.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2025-71078
Downstream
Related
Published
2026-01-13T15:34:43.437Z
Modified
2026-03-20T12:46:35.436869Z
Summary
powerpc/64s/slb: Fix SLB multihit issue during SLB preload
Details

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

powerpc/64s/slb: Fix SLB multihit issue during SLB preload

On systems using the hash MMU, there is a software SLB preload cache that mirrors the entries loaded into the hardware SLB buffer. This preload cache is subject to periodic eviction — typically after every 256 context switches — to remove old entry.

To optimize performance, the kernel skips switchmmucontext() in switchmmirqsoff() when the prev and next mmstruct are the same. However, on hash MMU systems, this can lead to inconsistencies between the hardware SLB and the software preload cache.

If an SLB entry for a process is evicted from the software cache on one CPU, and the same process later runs on another CPU without executing switchmmucontext(), the hardware SLB may retain stale entries. If the kernel then attempts to reload that entry, it can trigger an SLB multi-hit error.

The following timeline shows how stale SLB entries are created and can cause a multi-hit error when a process moves between CPUs without a MMU context switch.

CPU 0 CPU 1 ----- ----- Process P exec swapper/1 loadelfbinary beginnewexc activatemm switchmmirqsoff switchmmucontext switchslb /* * This invalidates all * the entries in the HW * and setup the new HW * SLB entries as per the * preload cache. */ contextswitch schedmigratetask migrates process P to cpu-1

Process swapper/0 context switch (to process P) (uses mmstruct of Process P) switchmmirqsoff() switchslb loadslb++ /* * loadslb becomes 0 here * and we evict an entry from * the preload cache with * preloadage(). We still * keep HW SLB and preload * cache in sync, that is * because all HW SLB entries * anyways gets evicted in * switchslb during SLBIA. * We then only add those * entries back in HW SLB, * which are currently * present in preloadcache * (after eviction). */ loadelfbinary continues... setupnewexec() slbsetupnew_exec()

                                    sched_switch event
                                    sched_migrate_task migrates
                                    process P to cpu-0

contextswitch from swapper/0 to Process P switchmmirqsoff() /* * Since both prev and next mm struct are same we don't call * switchmmucontext(). This will cause the HW SLB and SW preload * cache to go out of sync in preloadnewslbcontext. Because there * was an SLB entry which was evicted from both HW and preload cache * on cpu-1. Now later in preloadnewslbcontext(), when we will try * to add the same preload entry again, we will add this to the SW * preload cache and then will add it to the HW SLB. Since on cpu-0 * this entry was never invalidated, hence adding this entry to the HW * SLB will cause a SLB multi-hit error. */ loadelfbinary cont ---truncated---

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/71xxx/CVE-2025-71078.json",
    "cna_assigner": "Linux"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
5434ae74629af58ad0fc27143a9ea435f7734410
Fixed
01324c0328181b94cf390bda22ff91c75126ea57
Fixed
2e9a95d60f1df7b57618fd5ef057aef331575bd2
Fixed
c9f865022a1823d814032a09906e91e4701a35fc
Fixed
b13a3dbfa196af68eae2031f209743735ad416bf
Fixed
895123c309a34d2cfccf7812b41e17261a3a6f37
Fixed
4ae1e46d8a290319f33f71a2710a1382ba5431e8
Fixed
00312419f0863964625d6dcda8183f96849412c6

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2025-71078.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
4.20.0
Fixed
5.10.248
Type
ECOSYSTEM
Events
Introduced
5.11.0
Fixed
5.15.198
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
6.1.160
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.120
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.64
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.18.4

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2025-71078.json"