|
@@ -362,6 +362,19 @@ int deny_write_access(struct file * file)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * path_get - get a reference to a path
|
|
|
+ * @path: path to get the reference to
|
|
|
+ *
|
|
|
+ * Given a path increment the reference count to the dentry and the vfsmount.
|
|
|
+ */
|
|
|
+void path_get(struct path *path)
|
|
|
+{
|
|
|
+ mntget(path->mnt);
|
|
|
+ dget(path->dentry);
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(path_get);
|
|
|
+
|
|
|
/**
|
|
|
* path_put - put a reference to a path
|
|
|
* @path: path to put the reference to
|
|
@@ -1160,8 +1173,8 @@ static int do_path_lookup(int dfd, const char *name,
|
|
|
if (retval)
|
|
|
goto fput_fail;
|
|
|
|
|
|
- nd->path.mnt = mntget(file->f_path.mnt);
|
|
|
- nd->path.dentry = dget(dentry);
|
|
|
+ nd->path = file->f_path;
|
|
|
+ path_get(&file->f_path);
|
|
|
|
|
|
fput_light(file, fput_needed);
|
|
|
}
|