summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/nsfs.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/fs/nsfs.c b/fs/nsfs.c
index fb7b397a1297..30bb10034120 100644
--- a/fs/nsfs.c
+++ b/fs/nsfs.c
@@ -51,7 +51,7 @@ static void nsfs_evict(struct inode *inode)
static void *__ns_get_path(struct path *path, struct ns_common *ns)
{
- struct vfsmount *mnt = mntget(nsfs_mnt);
+ struct vfsmount *mnt = nsfs_mnt;
struct qstr qname = { .name = "", };
struct dentry *dentry;
struct inode *inode;
@@ -67,7 +67,7 @@ static void *__ns_get_path(struct path *path, struct ns_common *ns)
rcu_read_unlock();
ns->ops->put(ns);
got_it:
- path->mnt = mnt;
+ path->mnt = mntget(mnt);
path->dentry = dentry;
return NULL;
slow:
@@ -75,7 +75,6 @@ slow:
inode = new_inode_pseudo(mnt->mnt_sb);
if (!inode) {
ns->ops->put(ns);
- mntput(mnt);
return ERR_PTR(-ENOMEM);
}
inode->i_ino = ns->inum;
@@ -88,7 +87,6 @@ slow:
dentry = d_alloc_pseudo(mnt->mnt_sb, &qname);
if (!dentry) {
iput(inode);
- mntput(mnt);
return ERR_PTR(-ENOMEM);
}
d_instantiate(dentry, inode);
@@ -97,7 +95,6 @@ slow:
if (d) {
d_delete(dentry); /* make sure ->d_prune() does nothing */
dput(dentry);
- mntput(mnt);
cpu_relax();
return ERR_PTR(-EAGAIN);
}