U.S. flag   An official website of the United States government
Dot gov

Official websites use .gov
A .gov website belongs to an official government organization in the United States.

Https

Secure .gov websites use HTTPS
A lock (Dot gov) or https:// means you've safely connected to the .gov website. Share sensitive information only on official, secure websites.

Vulnerability Change Records for CVE-2026-53207

Change History

New CVE Received from kernel.org 6/25/2026 5:16:38 AM

Action Type Old Value New Value
Added 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]
Added Reference

                  
                
              
https://git.kernel.org/stable/c/3c2d42b8ee345b17a4ba56b0f6492d1ff4c1178e
Added Reference

                  
                
              
https://git.kernel.org/stable/c/77b73b54801ae7137479c141fd0473a491c1dc48
Added Reference

                  
                
              
https://git.kernel.org/stable/c/a33bfed648c10f5a1519981dbfad80841191edc8
Added Reference

                  
                
              
https://git.kernel.org/stable/c/bf7ba8f96c258c30393814491930ae4ecdc5fe5e
Added Reference

                  
                
              
https://git.kernel.org/stable/c/dd77a83915b07e2b0205adb284f08b39ae31dc4b
Added Reference

                  
                
              
https://git.kernel.org/stable/c/fc3ff42cb0cbf947e4600ae9761c3783760050e2
Added Affected

                  
                
              
[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","programFiles":["include/linux/hugetlb.h","include/linux/mm.h","mm/hugetlb.c","mm/memory-failure.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","versions":[{"version":"405ce051236cc65b30bbfe490b28ce60ae6aed85","lessThan":"fc3ff42cb0cbf947e4600ae9761c3783760050e2","versionType":"git","status":"affected"},{"version":"405ce051236cc65b30bbfe490b28ce60ae6aed85","lessThan":"77b73b54801ae7137479c141fd0473a491c1dc48","versionType":"git","status":"affected"},{"version":"405ce051236cc65b30bbfe490b28ce60ae6aed85","lessThan":"a33bfed648c10f5a1519981dbfad80841191edc8","versionType":"git","status":"affected"},{"version":"405ce051236cc65b30bbfe490b28ce60ae6aed85","lessThan":"dd77a83915b07e2b0205adb284f08b39ae31dc4b","versionType":"git","status":"affected"},{"version":"405ce051236cc65b30bbfe490b28ce60ae6aed85","lessThan":"bf7ba8f96c258c30393814491930ae4ecdc5fe5e","versionType":"git","status":"affected"},{"version":"405ce051236cc65b30bbfe490b28ce60ae6aed85","lessThan":"3c2d42b8ee345b17a4ba56b0f6492d1ff4c1178e","versionType":"git","status":"affected"},{"version":"62d1655b922958826b7ec22682c3141746f75064","versionType":"git","status":"affected"},{"version":"5.15.54","lessThan":"5.16","versionType":"semver","status":"affected"}]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","programFiles":["include/linux/hugetlb.h","include/linux/mm.h","mm/hugetlb.c","mm/memory-failure.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","versions":[{"version":"5.18","status":"affected"},{"version":"0","lessThan":"5.18","versionType":"semver","status":"unaffected"},{"version":"6.1.176","lessThanOrEqual":"6.1.*","versionType":"semver","status":"unaffected"},{"version":"6.6.143","lessThanOrEqual":"6.6.*","versionType":"semver","status":"unaffected"},{"version":"6.12.94","lessThanOrEqual":"6.12.*","versionType":"semver","status":"unaffected"},{"version":"6.18.36","lessThanOrEqual":"6.18.*","versionType":"semver","status":"unaffected"},{"version":"7.0.13","lessThanOrEqual":"7.0.*","versionType":"semver","status":"unaffected"},{"version":"7.1","lessThanOrEqual":"*","versionType":"original_commit_for_fix","status":"unaffected"}]}]