From: Neil Brown fs/nfsd/export.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff -puN fs/nfsd/export.c~exp_parent-locking-fix fs/nfsd/export.c --- 25/fs/nfsd/export.c~exp_parent-locking-fix 2003-04-02 22:51:29.000000000 -0800 +++ 25-akpm/fs/nfsd/export.c 2003-04-02 22:51:29.000000000 -0800 @@ -543,13 +543,13 @@ exp_parent(svc_client *clp, struct vfsmo dget(dentry); exp = exp_get_by_name(clp, mnt, dentry, reqp); - while (exp == NULL && dentry != dentry->d_parent) { + while (exp == NULL && !IS_ROOT(dentry)) { struct dentry *parent; read_lock(&dparent_lock); parent = dget(dentry->d_parent); + read_unlock(&dparent_lock); dput(dentry); dentry = parent; - read_unlock(&dparent_lock); exp = exp_get_by_name(clp, mnt, dentry, reqp); } dput(dentry); _