Skip to main content

Linux Kernel CVE-2026-53207

| EUVDEUVD-2026-39298 MEDIUM
Improper Locking (CWE-667)
2026-06-25 416baaa9-dc9f-4396-8d5f-8c081fb06d67 GHSA-hfrj-r4v7-3997
5.5
CVSS 3.1 · NVD
Share

Severity by source

NVD PRIMARY
5.5 MEDIUM
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
vuln.today AI
4.7 MEDIUM

Race condition requires precise timing across three concurrent operations, warranting AC:H over the vendor-assigned AC:L; PR:L reflects madvise(MADV_HWPOISON) requiring CAP_SYS_ADMIN on typical distributions.

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
4.0 AV:L/AC:H/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE
4.7 MEDIUM
AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
Red Hat
5.5 LOW
qualitative

Primary rating from NVD.

CVSS VectorNVD

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

5
Analysis Generated
Jul 02, 2026 - 23:16 vuln.today
CVSS changed
Jul 02, 2026 - 21:07 NVD
5.5 (MEDIUM)
Patch available
Jun 25, 2026 - 10:32 EUVD
CVE Published
Jun 25, 2026 - 09:16 cve.org
UNKNOWN (no severity yet)
CVE Published
Jun 25, 2026 - 09:16 nvd
MEDIUM 5.5

DescriptionNVD

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

mm/memory-failure: fix hugetlb_lock AA deadlock in get_huge_page_for_hwpoison

Two concurrent madvise(MADV_HWPOISON) calls on the same hugetlb page can trigger a recursive spinlock self-deadlock (AA deadlock) on hugetlb_lock when racing with a concurrent unmap:

thread#0 thread#1 -------- -------- madvise(folio, MADV_HWPOISON) -> poisons the folio successfully madvise(folio, MADV_HWPOISON) unmap(folio) try_memory_failure_hugetlb get_huge_page_for_hwpoison spin_lock_irq(&hugetlb_lock) <- held __get_huge_page_for_hwpoison hugetlb_update_hwpoison() -> MF_HUGETLB_FOLIO_PRE_POISONED goto out: folio_put() refcount: 1 -> 0 free_huge_folio() spin_lock_irqsave(&hugetlb_lock) -> AA DEADLOCK!

The out: path in __get_huge_page_for_hwpoison() calls folio_put() to drop the GUP reference while the hugetlb_lock is still held by the hugetlb.c wrapper get_huge_page_for_hwpoison(). If concurrent unmap has released the page table mapping reference, folio_put() drops the folio refcount to zero, triggering free_huge_folio() which attempts to re-acquire the non-recursive hugetlb_lock.

Fix this by moving hugetlb_lock acquisition from the hugetlb.c wrapper into get_huge_page_for_hwpoison(). Place spin_unlock_irq() before the folio_put() at the out: label so the folio is always released outside the lock.

[akpm@linux-foundation.org: fix race, rename label per Miaohe]

AnalysisAI

Recursive spinlock AA deadlock in the Linux kernel's hugetlb memory-failure subsystem allows a local user to hang or panic the kernel by racing two concurrent madvise(MADV_HWPOISON) calls against a concurrent unmap on the same hugetlb folio. The flaw exists because get_huge_page_for_hwpoison() held hugetlb_lock while calling folio_put(), which - when concurrent unmap had already dropped the page-table reference - triggered free_huge_folio() to re-acquire the non-recursive lock, causing an irrecoverable deadlock. No confirmed active exploitation exists (not in CISA KEV), and EPSS sits at 0.18% (8th percentile), indicating negligible real-world exploitation probability at this time.

Technical ContextAI

The vulnerability is in mm/memory-failure.c and mm/hugetlb.c within the Linux kernel memory management subsystem (CPE: cpe:2.3:o:linux:linux_kernel:*). CWE-667 (Improper Locking) describes the root cause precisely: the hugetlb.c wrapper get_huge_page_for_hwpoison() acquired hugetlb_lock before calling __get_huge_page_for_hwpoison(), which could invoke folio_put() on its out: exit path while the spinlock remained held. If a concurrent unmap had already released the page-table mapping reference, folio_put() reduced the folio refcount to zero, triggering free_huge_folio(), which attempted to re-acquire the same non-recursive spinlock - producing an unrecoverable AA deadlock. The upstream fix relocates spin_lock_irq acquisition into get_huge_page_for_hwpoison() itself and ensures spin_unlock_irq() is always called before folio_put(), eliminating the window where the lock is held across the potential free path.

RemediationAI

Upgrade to a patched stable kernel release: 6.1.176, 6.6.143, 6.12.94, 6.18.36, 7.0.13, or 7.1, as confirmed by EUVD version data. Individual fix commits are available at https://git.kernel.org/stable/c/3c2d42b8ee345b17a4ba56b0f6492d1ff4c1178e, https://git.kernel.org/stable/c/77b73b54801ae7137479c141fd0473a491c1dc48, https://git.kernel.org/stable/c/a33bfed648c10f5a1519981dbfad80841191edc8, https://git.kernel.org/stable/c/bf7ba8f96c258c30393814491930ae4ecdc5fe5e, https://git.kernel.org/stable/c/dd77a83915b07e2b0205adb284f08b39ae31dc4b, and https://git.kernel.org/stable/c/fc3ff42cb0cbf947e4600ae9761c3783760050e2. If immediate patching is not feasible, restrict delegation of CAP_SYS_ADMIN to untrusted users - this eliminates the attack path on most distributions where MADV_HWPOISON requires that capability; trade-off is that this may affect legitimate privileged workloads. Systems that do not allocate hugetlb pages (nr_hugepages=0 and no MAP_HUGETLB mappings) are not exposed to the race condition and require no additional action.

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 16.0 Affected

Share

CVE-2026-53207 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy