CVE-2025-37871

In the Linux kernel, the following vulnerability has been resolved: nfsd: decrease sc_count directly if fail to queue dl_recall A deadlock warning occurred when invoking nfs4_put_stid following a failed dl_recall queue operation: T1 T2 nfs4_laundromat nfs4_get_client_reaplist nfs4_anylock_blockers __break_lease spin_lock // ctx->flc_lock spin_lock // clp->cl_lock nfs4_lockowner_has_blockers locks_owner_has_blockers spin_lock // flctx->flc_lock nfsd_break_deleg_cb nfsd_break_one_deleg nfs4_put_stid refcount_dec_and_lock spin_lock // clp->cl_lock When a file is opened, an nfs4_delegation is allocated with sc_count initialized to 1, and the file_lease holds a reference to the delegation. The file_lease is then associated with the file through kernel_setlease. The disassociation is performed in nfsd4_delegreturn via the following call chain: nfsd4_delegreturn --> destroy_delegation --> destroy_unhashed_deleg --> nfs4_unlock_deleg_lease --> kernel_setlease --> generic_delete_lease The corresponding sc_count reference will be released after this disassociation. Since nfsd_break_one_deleg executes while holding the flc_lock, the disassociation process becomes blocked when attempting to acquire flc_lock in generic_delete_lease. This means: 1) sc_count in nfsd_break_one_deleg will not be decremented to 0; 2) The nfs4_put_stid called by nfsd_break_one_deleg will not attempt to acquire cl_lock; 3) Consequently, no deadlock condition is created. Given that sc_count in nfsd_break_one_deleg remains non-zero, we can safely perform refcount_dec on sc_count directly. This approach effectively avoids triggering deadlock warnings.
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.10.236:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.15.180:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.1.134:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.6.87:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.15:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.15:rc2:*:*:*:*:*:*

Configuration 2 (hide)

cpe:2.3:o:debian:debian_linux:11.0:*:*:*:*:*:*:*

History

12 Nov 2025, 19:45

Type Values Removed Values Added
First Time Linux
Debian
Debian debian Linux
Linux linux Kernel
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 5.5
CPE cpe:2.3:o:debian:debian_linux:11.0:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.15.180:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.6.87:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.10.236:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.1.134:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.15:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.15:rc1:*:*:*:*:*:*
CWE NVD-CWE-noinfo
References () https://git.kernel.org/stable/c/14985d66b9b99c12995dd99d1c6c8dec4114c2a5 - () https://git.kernel.org/stable/c/14985d66b9b99c12995dd99d1c6c8dec4114c2a5 - Patch
References () https://git.kernel.org/stable/c/7d192e27a431026c58d60edf66dc6cd98d0c01fc - () https://git.kernel.org/stable/c/7d192e27a431026c58d60edf66dc6cd98d0c01fc - Patch
References () https://git.kernel.org/stable/c/a1d14d931bf700c1025db8c46d6731aa5cf440f9 - () https://git.kernel.org/stable/c/a1d14d931bf700c1025db8c46d6731aa5cf440f9 - Patch
References () https://git.kernel.org/stable/c/a70832d3555987035fc430ccd703acd89393eadb - () https://git.kernel.org/stable/c/a70832d3555987035fc430ccd703acd89393eadb - Patch
References () https://git.kernel.org/stable/c/a7fce086f6ca84db409b9d58493ea77c1978897c - () https://git.kernel.org/stable/c/a7fce086f6ca84db409b9d58493ea77c1978897c - Patch
References () https://git.kernel.org/stable/c/b9bbe8f9d5663311d06667ce36d6ed255ead1a26 - () https://git.kernel.org/stable/c/b9bbe8f9d5663311d06667ce36d6ed255ead1a26 - Patch
References () https://git.kernel.org/stable/c/ba903539fff745d592d893c71b30e5e268a95413 - () https://git.kernel.org/stable/c/ba903539fff745d592d893c71b30e5e268a95413 - Patch
References () https://lists.debian.org/debian-lts-announce/2025/05/msg00030.html - () https://lists.debian.org/debian-lts-announce/2025/05/msg00030.html - Mailing List, Third Party Advisory
References () https://lists.debian.org/debian-lts-announce/2025/05/msg00045.html - () https://lists.debian.org/debian-lts-announce/2025/05/msg00045.html - Mailing List, Third Party Advisory

03 Nov 2025, 20:18

Type Values Removed Values Added
References
  • () https://lists.debian.org/debian-lts-announce/2025/05/msg00030.html -
  • () https://lists.debian.org/debian-lts-announce/2025/05/msg00045.html -

12 May 2025, 17:32

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: nfsd: disminuir sc_count directamente si no se puede poner en cola dl_recall Se produjo una advertencia de bloqueo al invocar nfs4_put_stid después de una operación de cola dl_recall fallida: T1 T2 nfs4_laundromat nfs4_get_client_reaplist nfs4_anylock_blockers __break_lease spin_lock // ctx->flc_lock spin_lock // clp->cl_lock nfs4_lockowner_has_blockers locks_owner_has_blockers spin_lock // flctx->flc_lock nfsd_break_deleg_cb nfsd_break_one_deleg nfs4_put_stid refcount_dec_and_lock spin_lock // clp->cl_lock Cuando se abre un archivo, se genera una nfs4_delegation asignado con sc_count inicializado a 1, y el file_lease contiene una referencia a la delegación. El file_lease se asocia entonces con el archivo a través de kernel_setlease. La disociación se realiza en nfsd4_delegreturn mediante la siguiente cadena de llamadas: nfsd4_delegreturn --> destroy_delegation --> destroy_unhashed_deleg --> nfs4_unlock_deleg_lease --> kernel_setlease --> generic_delete_lease La referencia sc_count correspondiente se liberará después de esta disociación. Dado que nfsd_break_one_deleg se ejecuta mientras mantiene el flc_lock, el proceso de disociación se bloquea al intentar adquirir flc_lock en generic_delete_lease. Esto significa: 1) sc_count en nfsd_break_one_deleg no se decrementará a 0; 2) El `nfs4_put_stid` llamado por `nfsd_break_one_deleg` no intentará adquirir `cl_lock`; 3) Por consiguiente, no se crea ninguna condición de interbloqueo. Dado que `sc_count` en `nfsd_break_one_deleg` permanece distinto de cero, podemos ejecutar `refcount_dec` en `sc_count` directamente. Este enfoque evita eficazmente la activación de advertencias de interbloqueo.

09 May 2025, 07:16

Type Values Removed Values Added
New CVE

Information

Published : 2025-05-09 07:16

Updated : 2025-11-12 19:45


NVD link : CVE-2025-37871

Mitre link : CVE-2025-37871

CVE.ORG link : CVE-2025-37871


JSON object : View

Products Affected

debian

  • debian_linux

linux

  • linux_kernel