When a filehandle is cleared with fh_put(), wipe out all traces by
clearing ->fh_pre_saved and ->fh_post_saved. This prevents
fill_post_wcc() from complaining if the filehandle is later reused.
(This could happen to CURRENT_FH if, for example, LOOKUP LOOKUP
occurs in a COMPOUND.)
--- old/fs/nfsd/nfsfh.c Sun Aug 11 22:54:17 2002
+++ new/fs/nfsd/nfsfh.c Sun Aug 11 22:55:44 2002
@@ -438,6 +438,10 @@ fh_put(struct svc_fh *fhp)
fh_unlock(fhp);
fhp->fh_dentry = NULL;
dput(dentry);
+#ifdef CONFIG_NFSD_V3
+ fhp->fh_pre_saved = 0;
+ fhp->fh_post_saved = 0;
+#endif
nfsd_nr_put++;
}
return;