In the Linux kernel, the following vulnerability has been resolved: mm/memory-failure: fix hugetlb_lock AA deadlock in get_huge_page_for_hwpoison… (CVE-2026-53207)
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]
AI Analysis
Technical Summary
The vulnerability (CVE-2026-53207) in the Linux kernel involves a deadlock condition triggered by two concurrent madvise(MADV_HWPOISON) calls on the same hugetlb page racing with a concurrent unmap. The deadlock occurs because folio_put() is called while holding the hugetlb_lock, and if the folio reference count reaches zero, free_huge_folio() tries to re-acquire the non-recursive hugetlb_lock, causing a recursive spinlock self-deadlock (AA deadlock). The patch moves the hugetlb_lock acquisition into get_huge_page_for_hwpoison() and ensures the lock is released before folio_put() is called, preventing the deadlock.
Potential Impact
This vulnerability can cause a denial of service (DoS) by deadlocking the kernel when specific memory management operations are performed concurrently on hugetlb pages. There is no impact on confidentiality or integrity, but availability is affected due to the kernel hang.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. The described fix involves code changes in the Linux kernel to move lock acquisition and release appropriately to prevent deadlock. Until an official patch is available, avoid concurrent madvise(MADV_HWPOISON) calls on the same hugetlb page racing with unmap operations if possible.
In the Linux kernel, the following vulnerability has been resolved: mm/memory-failure: fix hugetlb_lock AA deadlock in get_huge_page_for_hwpoison… (CVE-2026-53207)
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]
CVSS v3.1
Score 5.5medium
Weaknesses
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The vulnerability (CVE-2026-53207) in the Linux kernel involves a deadlock condition triggered by two concurrent madvise(MADV_HWPOISON) calls on the same hugetlb page racing with a concurrent unmap. The deadlock occurs because folio_put() is called while holding the hugetlb_lock, and if the folio reference count reaches zero, free_huge_folio() tries to re-acquire the non-recursive hugetlb_lock, causing a recursive spinlock self-deadlock (AA deadlock). The patch moves the hugetlb_lock acquisition into get_huge_page_for_hwpoison() and ensures the lock is released before folio_put() is called, preventing the deadlock.
Potential Impact
This vulnerability can cause a denial of service (DoS) by deadlocking the kernel when specific memory management operations are performed concurrently on hugetlb pages. There is no impact on confidentiality or integrity, but availability is affected due to the kernel hang.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. The described fix involves code changes in the Linux kernel to move lock acquisition and release appropriately to prevent deadlock. Until an official patch is available, avoid concurrent madvise(MADV_HWPOISON) calls on the same hugetlb page racing with unmap operations if possible.
Technical Details
- Gcve Source
- db.gcve.eu
- Osv Id
- GHSA-hfrj-r4v7-3997
- Osv Schema Version
- 1.4.0
- Aliases
- ["CVE-2026-53207"]
- Ecosystems
- []
- Database Specific Severity
- MODERATE
- Cvss Version
- 3.1
Threat ID: 6a46eca927e9c7971943a6de
Added to database: 07/02/2026, 22:56:41 UTC
Last enriched: 07/02/2026, 23:02:54 UTC
Last updated: 07/31/2026, 19:24:47 UTC
Views: 19
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.