From ec1d26ecbdb12455aad940832ed88503af46131d Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Wed, 2 Apr 2003 16:28:42 -0800 Subject: [PATCH] [PATCH] exp_parent locking fixes From: Neil Brown and myself. Don't do dput() inside read_lock(). It can sleep. --- fs/nfsd/export.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/nfsd/export.c b/fs/nfsd/export.c index 0555cd4f3037c..21e60185f08ef 100644 --- a/fs/nfsd/export.c +++ b/fs/nfsd/export.c @@ -543,13 +543,13 @@ exp_parent(svc_client *clp, struct vfsmount *mnt, struct dentry *dentry, 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); -- 2.53.0