Bug 2502318 (CVE-2026-63875) - CVE-2026-63875 kernel: arm64: tlb: Flush walk cache when unsharing PMD tables
Summary: CVE-2026-63875 kernel: arm64: tlb: Flush walk cache when unsharing PMD tables
Keywords:
Status: NEW
Alias: CVE-2026-63875
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
high
high
Target Milestone: ---
Assignee: Product Security
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-07-19 16:01 UTC by OSIDB Bzimport
Modified: 2026-11-02 23:13 UTC (History)
2 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2026:72467 0 None None None 2026-09-28 11:13:14 UTC
Red Hat Product Errata RHSA-2026:72468 0 None None None 2026-09-28 12:03:31 UTC
Red Hat Product Errata RHSA-2026:72623 0 None None None 2026-09-28 18:43:47 UTC
Red Hat Product Errata RHSA-2026:94109 0 None None None 2026-11-02 23:13:04 UTC

Description OSIDB Bzimport 2026-07-19 16:01:37 UTC
In the Linux kernel, the following vulnerability has been resolved:

arm64: tlb: Flush walk cache when unsharing PMD tables

When huge_pmd_unshare() is called to unshare a PMD table, the
tlb_unshare_pmd_ptdesc() function sets tlb->unshared_tables=true
but the aarch64 tlb_flush() only checked tlb->freed_tables to
determine whether to use TLBF_NONE (vae1is, invalidates walk
cache) or TLBF_NOWALKCACHE (vale1is, leaf-only).

This caused the stale PMD page table entry to remain in the walk cache
after unshare, potentially leading to incorrect page table walks.

Fix by including unshared_tables in the check, so that when
unsharing tables, TLBF_NONE is used and the walk cache is properly
invalidated.

Here is the detailed distinction between vae1is and vale1is:

| Instruction Combination  | Actual Invalidation Scope                         |
| ------------------------ | --------------------------------------------------|
| `VAE1IS`  + TTL=`0`      | All entries at all levels (full invalidation)     |
| `VAE1IS`  + TTL=`2` (L2) | Non-leaf at Level 0/1 + leaf at Level 2           |
| `VALE1IS` + TTL=`0`      | Leaf entries at all levels (non-leaf not cleared) |
| `VALE1IS` + TTL=`2` (L2) | Leaf entry at Level 2 only                        |

Comment 5 Jon Orris 2026-09-28 11:13:13 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 8

Via RHSA-2026:72467 https://access.redhat.com/errata/RHSA-2026:72467

Comment 6 Jon Orris 2026-09-28 12:03:30 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 8

Via RHSA-2026:72468 https://access.redhat.com/errata/RHSA-2026:72468

Comment 7 Jon Orris 2026-09-28 18:43:46 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 9

Via RHSA-2026:72623 https://access.redhat.com/errata/RHSA-2026:72623

Comment 10 Jon Orris 2026-11-02 23:13:03 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 9.4 Update Services for SAP Solutions

Via RHSA-2026:94109 https://access.redhat.com/errata/RHSA-2026:94109


Note You need to log in before you can comment on or make changes to this bug.