CVE-2026-53207
Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
25/06/2026
Última modificación:
02/07/2026
Descripción
*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
mm/memory-failure: fix hugetlb_lock AA deadlock in get_huge_page_for_hwpoison<br />
<br />
Two concurrent madvise(MADV_HWPOISON) calls on the same hugetlb page can<br />
trigger a recursive spinlock self-deadlock (AA deadlock) on hugetlb_lock<br />
when racing with a concurrent unmap:<br />
<br />
thread#0 thread#1<br />
-------- --------<br />
madvise(folio, MADV_HWPOISON)<br />
-> poisons the folio successfully<br />
madvise(folio, MADV_HWPOISON) unmap(folio)<br />
try_memory_failure_hugetlb<br />
get_huge_page_for_hwpoison<br />
spin_lock_irq(&hugetlb_lock) MF_HUGETLB_FOLIO_PRE_POISONED<br />
goto out:<br />
folio_put()<br />
refcount: 1 -> 0<br />
free_huge_folio()<br />
spin_lock_irqsave(&hugetlb_lock)<br />
-> AA DEADLOCK!<br />
<br />
The out: path in __get_huge_page_for_hwpoison() calls folio_put() to drop<br />
the GUP reference while the hugetlb_lock is still held by the hugetlb.c<br />
wrapper get_huge_page_for_hwpoison(). If concurrent unmap has released<br />
the page table mapping reference, folio_put() drops the folio refcount to<br />
zero, triggering free_huge_folio() which attempts to re-acquire the<br />
non-recursive hugetlb_lock.<br />
<br />
Fix this by moving hugetlb_lock acquisition from the hugetlb.c wrapper<br />
into get_huge_page_for_hwpoison(). Place spin_unlock_irq() before the<br />
folio_put() at the out: label so the folio is always released outside the<br />
lock.<br />
<br />
[akpm@linux-foundation.org: fix race, rename label per Miaohe]
Impacto
Puntuación base 3.x
5.50
Gravedad 3.x
MEDIA
Productos y versiones vulnerables
| CPE | Desde | Hasta |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.15.54 (incluyendo) | 5.16 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.18.1 (incluyendo) | 6.1.176 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (incluyendo) | 6.6.143 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (incluyendo) | 6.12.94 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.13 (incluyendo) | 6.18.36 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.19 (incluyendo) | 7.0.13 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:5.18:-:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:5.18:rc4:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:5.18:rc5:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:5.18:rc6:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:5.18:rc7:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc3:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc4:*:*:*:*:*:* |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página
Referencias a soluciones, herramientas e información
- 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
- https://git.kernel.org/stable/c/fc3ff42cb0cbf947e4600ae9761c3783760050e2



