Executive brief
A synchronization issue in the Linux kernel's NFSv4 implementation can cause systems to hang during file write operations. This occurs when multiple background tasks become stuck waiting for a resource that has already been released, leading to a denial of service where the system or specific applications stop responding. The issue primarily affects systems using Parallel NFS (pNFS) for high-performance network storage.
Technical details
A race condition exists in the NFSv4/pNFS client within the Linux kernel due to missing memory barriers in the nfs_layoutget_end() function. Specifically, a task may wait on the NFS_LAYOUT_DRAIN bit in pnfs_update_layout() while the waker sees a zero outstanding count but fails to trigger the wake-up signal correctly. This results in a deadlock where tasks remain stuck in writeback waiting on page locks. The fix involves applying an 'smp_mb__after_atomic()' barrier to ensure proper visibility of state changes between the waiter and the waker. This is a local attack vector requiring low privileges, primarily impacting system availability.
Affected products
- Linux Linux Kernel 5.10.124 to 5.10.240, 5.15.49 to 5.15.187, 5.18.6 to 5.19, 6.2 to 6.6.97, 6.7 to 6.12.37, 6.13 to 6.15.6
Timeline
- 2025-07-25: disclosed
- 2025-07-25: advisory
References
- https://git.kernel.org/stable/c/08287df60bac5b008b6bcdb03053988335d3d282
- https://git.kernel.org/stable/c/1f4da20080718f258e189a2c5f515385fa393da6
- https://git.kernel.org/stable/c/864a54c1243ed3ca60baa4bc492dede1361f4c83
- https://git.kernel.org/stable/c/8846fd02c98da8b79e6343a20e6071be6f372180
- https://git.kernel.org/stable/c/8ca65fa71024a1767a59ffbc6a6e2278af84735e
- https://git.kernel.org/stable/c/c01776287414ca43412d1319d2877cbad65444ac
- https://git.kernel.org/stable/c/e4b13885e7ef1e64e45268feef1e5f0707c47e72