]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
nfsd: Map -ESTALE from case probe to NFS3ERR_STALE
authorChuck Lever <chuck.lever@oracle.com>
Fri, 15 May 2026 15:35:14 +0000 (11:35 -0400)
committerChristian Brauner <brauner@kernel.org>
Fri, 15 May 2026 15:49:23 +0000 (17:49 +0200)
The PATHCONF switch in nfsd3_proc_pathconf() recognizes -EOPNOTSUPP
(filesystem does not expose case state) and maps -EACCES / -EPERM to
nfserr_stale, but lets every other errno fall through to
nfserr_serverfault. -ESTALE escapes the same way even though RFC 1813
lists NFS3ERR_STALE as a permitted PATHCONF status, so a probe of an
NFS-backed re-export whose parent dentry has been invalidated returns
SERVERFAULT and tells the client the server is broken when the handle
itself simply went stale.

Add an explicit -ESTALE arm that maps to nfserr_stale.

Fixes: a8de9c3b40e4 ("nfsd: Report export case-folding via NFSv3 PATHCONF")
Reported-by: sashiko-bot <sashiko-bot@kernel.org>
Closes: https://sashiko.dev/#/patchset/20260507-case-sensitivity-v14-0-e62cc8200435@oracle.com?part=13
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Link: https://patch.msgid.link/20260515153515.362266-7-cel@kernel.org
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/nfsd/nfs3proc.c

index 12b9172c6be19c7a4e02c5c85333031307583625..aeda7a802bdf7ac40ca1e692b46efe69b75918d9 100644 (file)
@@ -745,6 +745,9 @@ nfsd3_proc_pathconf(struct svc_rqst *rqstp)
                         */
                        resp->status = nfserr_stale;
                        break;
+               case -ESTALE:
+                       resp->status = nfserr_stale;
+                       break;
                default:
                        resp->status = nfserr_serverfault;
                        break;