Some filesystems have grown export operations in order to provide
filehandles for local usage. Some of these filesystems are unsuitable
for use with nfsd, since their filehandles are not persistent across
reboots.

In __fh_verify, check whether EXPORT_OP_STABLE_HANDLES is set
and return nfserr_stale if it isn't.

Signed-off-by: Jeff Layton <[email protected]>
---
 fs/nfsd/nfsfh.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/fs/nfsd/nfsfh.c b/fs/nfsd/nfsfh.c
index 
ed85dd43da18e6d4c4667ff14dc035f2eacff1d6..da9d5fb2e6613c2707195da2e8678b3fcb3d444d
 100644
--- a/fs/nfsd/nfsfh.c
+++ b/fs/nfsd/nfsfh.c
@@ -334,6 +334,10 @@ __fh_verify(struct svc_rqst *rqstp,
        dentry = fhp->fh_dentry;
        exp = fhp->fh_export;
 
+       error = nfserr_stale;
+       if (!(dentry->d_sb->s_export_op->flags & EXPORT_OP_STABLE_HANDLES))
+               goto out;
+
        trace_nfsd_fh_verify(rqstp, fhp, type, access);
 
        /*

-- 
2.52.0


Reply via email to