CVE-2026-89706

nfsd: Reset write verifier when async COPY writeback fails

State
Published
Severity
7.5 High
Published
Sep 11, 2026
Updated
Oct 19, 2026
Reserved
Sep 11, 2026

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

nfsd: Reset write verifier when async COPY writeback fails

Async COPY captures nn->writeverf at request time and reports it to the client via CB_OFFLOAD after the worker kthread completes. When the post-copy vfs_fsync_range() or filemap_check_wb_err() in _nfsd_copy_file_range() reports an error, the worker correctly leaves NFSD4_COPY_F_COMMITTED clear so that CB_OFFLOAD encodes wr_stable_how as NFS_UNSTABLE, but the server's write verifier is not rotated.

A client that receives NFS_UNSTABLE in CB_OFFLOAD follows up with COMMIT to make the copied data durable. With the verifier unchanged, COMMIT returns the same value the client just received via CB_OFFLOAD, and the client concludes the copy is durable -- silently dropping the data whose writeback in fact failed. This violates the UNSTABLE+COMMIT durability contract (RFC 7862 section 15.1, RFC 8881 section 18.32) and matches the bug just fixed in nfsd_vfs_write() and nfsd_commit().

Rotate nn->writeverf at the writeback-failure site. The async COPY worker has no svc_rqst, so commit_reset_write_verifier() is not available here; calling nfsd_reset_write_verifier() directly mirrors the trace-less reset already used by nfsd_file_check_write_error() for the same purpose. Filter out -EAGAIN and -ESTALE, matching commit_reset_write_verifier(), since neither indicates a durable-storage failure.

Scores

CVSSScoreVectorSource
3.17.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:NLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 817c6eb975798647c4bbbfc9eb288aa413ec7f65 to before cc5f7cef0659a27c13dd33edd8e2f79257b095c6Affected
  • eac0b17a77fbd763d305a5eaa4fd1119e5a0fe0d to before c6d2f6372c7e0f76b9c148ff7696aec64da0b5b7Affected
  • eac0b17a77fbd763d305a5eaa4fd1119e5a0fe0d to before 8a08ffe73eb2aa6bc6f88763da7e2b55bab6493aAffected
  • eac0b17a77fbd763d305a5eaa4fd1119e5a0fe0d to before 6b13d26cc21b6320a3c61d5e4cee2ce9a589b181Affected
  • eac0b17a77fbd763d305a5eaa4fd1119e5a0fe0d to before 31d4d0a62ec4bafbcdbad142f11ab1f90794b1d0Affected
  • eac0b17a77fbd763d305a5eaa4fd1119e5a0fe0d to before 591134e059e3456180244a826d6917cdc183140bAffected
  • eac0b17a77fbd763d305a5eaa4fd1119e5a0fe0d to before bf0cd31a9abcb728c17d79b4c2cc533612a8b6afAffected
  • eac0b17a77fbd763d305a5eaa4fd1119e5a0fe0d to before f5cb2276954cb80987a93ef9f9dfbfdbfc0f10b9Affected
  • 5.10.220 to before 5.10.270Affected
LinuxLinux
  • 5.14Affected
  • before 5.14Not affected
  • 5.10.270 through 5.10.*Not affected
  • 5.15.221 through 5.15.*Not affected
  • 6.1.188 through 6.1.*Not affected
  • 6.6.157 through 6.6.*Not affected
  • 6.12.109 through 6.12.*Not affected
  • 6.18.50 through 6.18.*Not affected
  • 7.2.4 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.