CVE-2025-71309

In the Linux kernel, the following vulnerability has been resolved: fs/ntfs3: fix deadlock in ni_read_folio_cmpr Syzbot reported a task hung in ni_readpage_cmpr (now ni_read_folio_cmpr). This is caused by a lock inversion deadlock involving the inode mutex (ni_lock) and page locks. Scenario: 1. Task A enters ntfs_read_folio() for page X. It acquires ni_lock. 2. Task A calls ni_read_folio_cmpr(), which attempts to lock all pages in the compressed frame (including page Y). 3. Concurrently, Task B (e.g., via readahead) has locked page Y and calls ntfs_read_folio(). 4. Task B waits for ni_lock (held by A). 5. Task A waits for page Y lock (held by B). -> DEADLOCK. The fix is to restructure locking: do not take ni_lock in ntfs_read_folio(). Instead, acquire ni_lock inside ni_read_folio_cmpr() ONLY AFTER all required page locks for the frame have been successfully acquired. This restores the correct lock ordering (Page Lock -> ni_lock) consistent with VFS. [almaz.alexandrovich@paragon-software.com: ni_readpage_cmpr was renamed to ni_read_folio_cmpr]
Configurations

Configuration 1 (hide)

cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*

History

14 Oct 2026, 13:10

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: fs/ntfs3: corrige interbloqueo en ni_read_folio_cmpr Syzbot informó una tarea colgada en ni_readpage_cmpr (ahora ni_read_folio_cmpr). Esto es causado por un interbloqueo de inversión de bloqueo que involucra el mutex del inodo (ni_lock) y los bloqueos de página. Escenario: 1. La Tarea A entra en ntfs_read_folio() para la página X. Adquiere ni_lock. 2. La Tarea A llama a ni_read_folio_cmpr(), que intenta bloquear todas las páginas en el marco comprimido (incluida la página Y). 3. Concurrently, la Tarea B (p. ej., a través de readahead) ha bloqueado la página Y y llama a ntfs_read_folio(). 4. La Tarea B espera por ni_lock (retenido por A). 5. La Tarea A espera por el bloqueo de la página Y (retenido por B). -> INTERBLOQUEO. La solución es reestructurar el bloqueo: no tomar ni_lock en ntfs_read_folio(). En su lugar, adquirir ni_lock dentro de ni_read_folio_cmpr() SÓLO DESPUÉS de que todos los bloqueos de página requeridos para el marco hayan sido adquiridos exitosamente. Esto restaura el orden de bloqueo correcto (Bloqueo de Página -> ni_lock) consistente con VFS. [almaz.alexandrovich@paragon-software.com: ni_readpage_cmpr fue renombrado a ni_read_folio_cmpr]

Information

Published : 2026-05-27 14:16

Updated : 2026-10-14 13:10


NVD link : CVE-2025-71309

Mitre link : CVE-2025-71309

CVE.ORG link : CVE-2025-71309


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-667

Improper Locking