nfsd: reset write verifier on deferred writeback errors
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.10.261, 5.15.212
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: nfsd: reset write verifier on deferred writeback errors nfsd_vfs_write() and nfsd_commit() both call filemap_check_wb_err() to detect deferred writeback errors, but neither rotates the server's write verifier (nn->writeverf) when this check fails. Every other durable-storage-failure path in these functions calls commit_reset_write_verifier() before returning an error. The missing rotation means clients holding UNSTABLE write data under the current verifier will COMMIT, receive the unchanged verifier back, and conclude their data is durable — silently dropping data that failed writeback. This violates the UNSTABLE+COMMIT durability contract (RFC 1813 §3.3.7, RFC 8881 §18.32). Add commit_reset_write_verifier() calls at both filemap_check_wb_err() error sites, matching the pattern used by adjacent error paths in the same functions. The helper already filters -EAGAIN and -ESTALE internally, so the calls are unconditionally safe.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 5.10.124 · fixed in 5.10.261; From 5.15.49 · fixed in 5.15.212
- Linux Linux
5.17
References 8
git.kernel.org
- stable/c/b8e5894e56cff70fa245628fe16f0ad6367f8090
- stable/c/bc2baca02ec56da7707a74ed5d340b0a1dff1841
- stable/c/43b65d2997963e80e8d8d86520bcb1e0751227de
- stable/c/666e837b247fcadf2d8d508b9b0e49d720393eb4
- stable/c/1dd664b39774a9c89b72de8e59bf9ef4b3aaff2e
- stable/c/4367afc119c51e17a616f6908772b7e2c2c4013f
- stable/c/b027cca33c97354149fcc0ddeede4525c41093cd
- stable/c/2090b05803faab8a9fa62fbff871007862cac1b7