7.8 HIGH
- CVSS version (CVSS): 3.1
- Attack Vector (AV): Local (L)
- Attack Complexity (AC): Low (L)
- Privileges Required (PR): Low (L)
- User Interaction (UI): None (N)
- Scope (S): Unchanged (U)
- Confidentiality (C): High (H)
- Integrity (I): High (H)
- Availability (A): High (H)
- Modified Attack Vector (MAV): Local (L)
- Modified Attack Complexity (MAC): Low (L)
- Modified Privileges Required (MPR): Low (L)
- Modified User Interaction (MUI): None (N)
- Modified Confidentiality (MC): High (H)
- Modified Scope (MS): Unchanged (U)
- Modified Integrity (MI): High (H)
- Modified Availability (MA): High (H)
Activity log
- Created & dismissed (max. allowed matches exceeded) suggestion
arm64: tlb: Flush walk cache when unsharing PMD tables
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 |
References
Affected products
- <d766a49d9b55705c4737cd8bb5d3faa2d31330fd
- <47490bbb05c8c0e09cc3cfd237d8934ffc340583
- ==6.19
- =<6.1.*
- =<5.15.*
- <6.6.143
- =<5.10.*
- <5.10.259
- =<7.0.*
- <8ca7284da0e67b3e71d90ec17f08286774245ad9
- <6.1.176
- =<6.6.*
- <6.19
- <5.15.210
- <c2ff4764e03e7a8d758352f4aceb8fe1be6ac971
- <6.18.35
- <dced308d7d6a0de1c09d2058f38f1aaaf5cbb914
- <0199c9d57861f17b556b6cba1f765c7cce79745b
- =<6.18.*
- =<6.12.*
- <fe93e907b1af03cc229a80aa64a570a103d2b279
- =<*
- <48125cd9c55cbe297b59fd1f9bda48b0960bd181
- <6.12.93