From: NeilBrown <neilb@cse.unsw.edu.au> there's a small typo in nfsd_acceptable. It calls err = permission(parent->d_inode, S_IXOTH, NULL); It really wants to use MAY_EXEC instead of S_IXOTH. Those happen to be the same at the moment, but may not do so forever. From: Olaf Kirch <okir@suse.de>: From: "J. Bruce Fields" <bfields@fieldses.org> Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> --- 25-akpm/fs/nfsd/nfsfh.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN fs/nfsd/nfsfh.c~knfsd-3-of-11-nfsd_acceptable_typopatch fs/nfsd/nfsfh.c --- 25/fs/nfsd/nfsfh.c~knfsd-3-of-11-nfsd_acceptable_typopatch 2004-05-28 00:10:34.993427600 -0700 +++ 25-akpm/fs/nfsd/nfsfh.c 2004-05-28 00:10:34.996427144 -0700 @@ -56,7 +56,7 @@ int nfsd_acceptable(void *expv, struct d /* make sure parents give x permission to user */ int err; parent = dget_parent(tdentry); - err = permission(parent->d_inode, S_IXOTH, NULL); + err = permission(parent->d_inode, MAY_EXEC, NULL); if (err < 0) { dput(parent); break; _