Now that check_submounts_and_drop can not fail and is called from
d_invalidate there is no longer a need to call check_submounts_and_drom
from filesystem d_revalidate methods so remove it.

Signed-off-by: "Eric W. Biederman" <ebied...@xmission.com>
---
 fs/afs/dir.c     |    5 -----
 fs/fuse/dir.c    |    3 ---
 fs/gfs2/dentry.c |    3 ---
 fs/kernfs/dir.c  |   11 -----------
 fs/nfs/dir.c     |    4 ----
 5 files changed, 0 insertions(+), 26 deletions(-)

diff --git a/fs/afs/dir.c b/fs/afs/dir.c
index 529300327f45..a1645b88fe8a 100644
--- a/fs/afs/dir.c
+++ b/fs/afs/dir.c
@@ -669,7 +669,6 @@ static int afs_d_revalidate(struct dentry *dentry, unsigned 
int flags)
 
 out_valid:
        dentry->d_fsdata = dir_version;
-out_skip:
        dput(parent);
        key_put(key);
        _leave(" = 1 [valid]");
@@ -682,10 +681,6 @@ not_found:
        spin_unlock(&dentry->d_lock);
 
 out_bad:
-       /* don't unhash if we have submounts */
-       if (check_submounts_and_drop(dentry) != 0)
-               goto out_skip;
-
        _debug("dropping dentry %s/%s",
               parent->d_name.name, dentry->d_name.name);
        dput(parent);
diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
index 1d1292c581c3..5192d0a04d20 100644
--- a/fs/fuse/dir.c
+++ b/fs/fuse/dir.c
@@ -273,9 +273,6 @@ out:
 
 invalid:
        ret = 0;
-
-       if (!(flags & LOOKUP_RCU) && check_submounts_and_drop(entry) != 0)
-               ret = 1;
        goto out;
 }
 
diff --git a/fs/gfs2/dentry.c b/fs/gfs2/dentry.c
index d3a5d4e29ba5..589f4ea9381c 100644
--- a/fs/gfs2/dentry.c
+++ b/fs/gfs2/dentry.c
@@ -93,9 +93,6 @@ invalid_gunlock:
        if (!had_lock)
                gfs2_glock_dq_uninit(&d_gh);
 invalid:
-       if (check_submounts_and_drop(dentry) != 0)
-               goto valid;
-
        dput(parent);
        return 0;
 
diff --git a/fs/kernfs/dir.c b/fs/kernfs/dir.c
index 5104cf5d25c5..43d5ab905238 100644
--- a/fs/kernfs/dir.c
+++ b/fs/kernfs/dir.c
@@ -296,21 +296,10 @@ static int kernfs_dop_revalidate(struct dentry *dentry, 
unsigned int flags)
                goto out_bad;
 
        mutex_unlock(&kernfs_mutex);
-out_valid:
        return 1;
 out_bad:
        mutex_unlock(&kernfs_mutex);
 out_bad_unlocked:
-       /*
-        * @dentry doesn't match the underlying kernfs node, drop the
-        * dentry and force lookup.  If we have submounts we must allow the
-        * vfs caches to lie about the state of the filesystem to prevent
-        * leaks and other nasty things, so use check_submounts_and_drop()
-        * instead of d_drop().
-        */
-       if (check_submounts_and_drop(dentry) != 0)
-               goto out_valid;
-
        return 0;
 }
 
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index be38b573495a..a8a2f7f86c45 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -1143,10 +1143,6 @@ out_zap_parent:
                if (IS_ROOT(dentry))
                        goto out_valid;
        }
-       /* If we have submounts, don't unhash ! */
-       if (check_submounts_and_drop(dentry) != 0)
-               goto out_valid;
-
        dput(parent);
        dfprintk(LOOKUPCACHE, "NFS: %s(%pd2) is invalid\n",
                        __func__, dentry);
-- 
1.7.5.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to