CVE-2025-22045

x86/mm: Fix flush_tlb_range() when used for zapping normal PMDs

State
Published
Severity
7.8 High
Published
Apr 16, 2025
Updated
Oct 15, 2026
Reserved
Dec 29, 2024

Read the record on cve.org

Description

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

x86/mm: Fix flush_tlb_range() when used for zapping normal PMDs

On the following path, flush_tlb_range() can be used for zapping normal PMD entries (PMD entries that point to page tables) together with the PTE entries in the pointed-to page table:

collapse_pte_mapped_thp pmdp_collapse_flush flush_tlb_range

The arm64 version of flush_tlb_range() has a comment describing that it can be used for page table removal, and does not use any last-level invalidation optimizations. Fix the X86 version by making it behave the same way.

Currently, X86 only uses this information for the following two purposes, which I think means the issue doesn't have much impact:

- In native_flush_tlb_multi() for checking if lazy TLB CPUs need to be IPI'd to avoid issues with speculative page table walks. - In Hyper-V TLB paravirtualization, again for lazy TLB stuff.

The patch "x86/mm: only invalidate final translations with INVLPGB" which is currently under review (see <https://lore.kernel.org/all/20241230175550.4046587-13-riel@surriel.com/>) would probably be making the impact of this a lot worse.

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

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 016c4d92cd16f569c6485ae62b076c1a4b779536 to before 618d5612ecb7bfc1c85342daafeb2b47e29e77a3Affected
  • 016c4d92cd16f569c6485ae62b076c1a4b779536 to before 556d446068f90981e5d71ca686bdaccdd545d491Affected
  • 016c4d92cd16f569c6485ae62b076c1a4b779536 to before 0a8f806ea6b5dd64b3d1f05ff774817d5f7ddbd1Affected
  • 016c4d92cd16f569c6485ae62b076c1a4b779536 to before 0708fd6bd8161871bfbadced2ca4319b84ab44feAffected
  • 016c4d92cd16f569c6485ae62b076c1a4b779536 to before 7085895c59e4057ffae17f58990ccb630087d0d2Affected
  • 016c4d92cd16f569c6485ae62b076c1a4b779536 to before 93224deb50a8d20df3884f3672ce9f982129aa50Affected
  • 016c4d92cd16f569c6485ae62b076c1a4b779536 to before 320ac1af4c0bdb92c864dc9250d1329234820edfAffected
  • 016c4d92cd16f569c6485ae62b076c1a4b779536 to before 78d6f9a9eb2a5da6fcbd76d6191d24b0dcc321beAffected
  • 016c4d92cd16f569c6485ae62b076c1a4b779536 to before 3ef938c3503563bfc2ac15083557f880d29c2e64Affected
LinuxLinux
  • 4.20Affected
  • before 4.20Not affected
  • 5.4.292 through 5.4.*Not affected
  • 5.10.236 through 5.10.*Not affected
  • 5.15.180 through 5.15.*Not affected
  • 6.1.134 through 6.1.*Not affected
  • 6.6.87 through 6.6.*Not affected
  • 6.12.23 through 6.12.*Not affected
  • 6.13.11 through 6.13.*Not affected
  • 6.14.2 through 6.14.*Not affected
  • 6.15 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.