|
@@ -23,19 +23,15 @@
|
|
|
static struct file *do_open(char *name, int flags)
|
|
|
{
|
|
|
struct nameidata nd;
|
|
|
+ struct vfsmount *mnt;
|
|
|
int error;
|
|
|
|
|
|
- nd.mnt = do_kern_mount("nfsd", 0, "nfsd", NULL);
|
|
|
+ mnt = do_kern_mount("nfsd", 0, "nfsd", NULL);
|
|
|
+ if (IS_ERR(mnt))
|
|
|
+ return (struct file *)mnt;
|
|
|
|
|
|
- if (IS_ERR(nd.mnt))
|
|
|
- return (struct file *)nd.mnt;
|
|
|
-
|
|
|
- nd.dentry = dget(nd.mnt->mnt_root);
|
|
|
- nd.last_type = LAST_ROOT;
|
|
|
- nd.flags = 0;
|
|
|
- nd.depth = 0;
|
|
|
-
|
|
|
- error = path_walk(name, &nd);
|
|
|
+ error = vfs_path_lookup(mnt->mnt_root, mnt, name, 0, &nd);
|
|
|
+ mntput(mnt); /* drop do_kern_mount reference */
|
|
|
if (error)
|
|
|
return ERR_PTR(error);
|
|
|
|