CVE-2026-53207 Details
Description
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. [[email protected]: fix race, rename label per Miaohe]
A deadlock vulnerability has been identified in the Linux kernel's memory management system, specifically within the handling of hugetlb pages. This issue arises when two concurrent calls to madvise with the MADV_HWPOISON flag are made on the same hugetlb page. The first call successfully poisons the page, while the second call, racing with a page unmapping operation, triggers a recursive deadlock on the hugetlb_lock. This deadlock occurs because the unmap operation releases the page table mapping, allowing the poisoned page reference count to drop to zero and initiate a process that attempts to re-acquire the hugetlb_lock, which is already held, causing a deadlock.
The vulnerability has been addressed by modifying the order of operations in the memory management code. The hugetlb_lock is now acquired within the get_huge_page_for_hwpoison function, rather than in the wrapper that calls it. This change prevents the deadlock by ensuring that the lock is released before dropping the reference count on the poisoned page, thereby avoiding the recursive lock acquisition that caused the deadlock.
Metrics
CVSS 4.0 Severity and Vector Strings:
No CVSS 4.0 data is available for this CVE.
CVSS 3.x Severity and Vector Strings:
No data available for CVSS Version 2.0 on this CVE.
No SSVC data is available for this CVE.
References to Advisories, Solutions, and Tools
By selecting these links, you will be leaving this site. These are references gathered from the official CVE record and are not endorsed by Volerion.
| URL | Source(s) | Tag(s) |
|---|---|---|
| https://git.kernel.org/stable/c/3c2d42b8ee345b17a4ba56b0f6492d1ff4c1178e | kernel.org | Patch |
| https://git.kernel.org/stable/c/77b73b54801ae7137479c141fd0473a491c1dc48 | kernel.org | Patch |
| https://git.kernel.org/stable/c/a33bfed648c10f5a1519981dbfad80841191edc8 | kernel.org | Patch |
| https://git.kernel.org/stable/c/bf7ba8f96c258c30393814491930ae4ecdc5fe5e | kernel.org | Patch |
| https://git.kernel.org/stable/c/dd77a83915b07e2b0205adb284f08b39ae31dc4b | kernel.org | Patch |
| https://git.kernel.org/stable/c/fc3ff42cb0cbf947e4600ae9761c3783760050e2 | kernel.org | Patch |
Weakness Enumeration
| CWE-ID | CWE Name | Source |
|---|---|---|
| CWE-667 | Improper Locking | [email protected] |
Affected Products
| Product | Versions |
|---|---|
| linux linux kernel | >= 5.15.54, < 5.16 >= 5.18.1, < 6.1.176 >= 6.2, < 6.6.143 >= 6.7, < 6.12.94 >= 6.13, < 6.18.36 >= 6.19, < 7.0.13 5.18 - 5.18 rc4 5.18 rc5 5.18 rc6 5.18 rc7 7.1 rc1 7.1 rc2 7.1 rc3 7.1 rc4 7.1 rc5 7.1 rc6 |
CPE
Remediation
| |
Change History
2 change records found show changes
| Date | Action | Recorded By |
|---|---|---|
| Jul 2, 2026 | Initial Analysis | [email protected] |
| Jun 25, 2026 | New CVE Received | kernel.org |