switch vfs_path_lookup() to struct path
[linux-2.6.git] / fs / nfs / super.c
index ce40e5c..b961cea 100644 (file)
@@ -2773,16 +2773,12 @@ static void nfs_referral_loop_unprotect(void)
 static struct dentry *nfs_follow_remote_path(struct vfsmount *root_mnt,
                const char *export_path)
 {
-       struct nameidata *nd = NULL;
        struct mnt_namespace *ns_private;
        struct super_block *s;
        struct dentry *dentry;
+       struct path path;
        int ret;
 
-       nd = kmalloc(sizeof(*nd), GFP_KERNEL);
-       if (nd == NULL)
-               return ERR_PTR(-ENOMEM);
-
        ns_private = create_mnt_ns(root_mnt);
        ret = PTR_ERR(ns_private);
        if (IS_ERR(ns_private))
@@ -2793,7 +2789,7 @@ static struct dentry *nfs_follow_remote_path(struct vfsmount *root_mnt,
                goto out_put_mnt_ns;
 
        ret = vfs_path_lookup(root_mnt->mnt_root, root_mnt,
-                       export_path, LOOKUP_FOLLOW, nd);
+                       export_path, LOOKUP_FOLLOW, &path);
 
        nfs_referral_loop_unprotect();
        put_mnt_ns(ns_private);
@@ -2801,12 +2797,11 @@ static struct dentry *nfs_follow_remote_path(struct vfsmount *root_mnt,
        if (ret != 0)
                goto out_err;
 
-       s = nd->path.mnt->mnt_sb;
+       s = path.mnt->mnt_sb;
        atomic_inc(&s->s_active);
-       dentry = dget(nd->path.dentry);
+       dentry = dget(path.dentry);
 
-       path_put(&nd->path);
-       kfree(nd);
+       path_put(&path);
        down_write(&s->s_umount);
        return dentry;
 out_put_mnt_ns:
@@ -2814,7 +2809,6 @@ out_put_mnt_ns:
 out_mntput:
        mntput(root_mnt);
 out_err:
-       kfree(nd);
        return ERR_PTR(ret);
 }