aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/dcache.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/fs/dcache.c b/fs/dcache.c
index 66aaf52199e9..688aac951d11 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -1776,9 +1776,8 @@ shouldnt_be_hashed:
1776 * 1776 *
1777 * "buflen" should be positive. Caller holds the dcache_lock. 1777 * "buflen" should be positive. Caller holds the dcache_lock.
1778 */ 1778 */
1779static char * __d_path( struct dentry *dentry, struct vfsmount *vfsmnt, 1779static char *__d_path(struct dentry *dentry, struct vfsmount *vfsmnt,
1780 struct dentry *root, struct vfsmount *rootmnt, 1780 struct path *root, char *buffer, int buflen)
1781 char *buffer, int buflen)
1782{ 1781{
1783 char * end = buffer+buflen; 1782 char * end = buffer+buflen;
1784 char * retval; 1783 char * retval;
@@ -1803,7 +1802,7 @@ static char * __d_path( struct dentry *dentry, struct vfsmount *vfsmnt,
1803 for (;;) { 1802 for (;;) {
1804 struct dentry * parent; 1803 struct dentry * parent;
1805 1804
1806 if (dentry == root && vfsmnt == rootmnt) 1805 if (dentry == root->dentry && vfsmnt == root->mnt)
1807 break; 1806 break;
1808 if (dentry == vfsmnt->mnt_root || IS_ROOT(dentry)) { 1807 if (dentry == vfsmnt->mnt_root || IS_ROOT(dentry)) {
1809 /* Global root? */ 1808 /* Global root? */
@@ -1866,7 +1865,7 @@ char * d_path(struct dentry *dentry, struct vfsmount *vfsmnt,
1866 path_get(&current->fs->root); 1865 path_get(&current->fs->root);
1867 read_unlock(&current->fs->lock); 1866 read_unlock(&current->fs->lock);
1868 spin_lock(&dcache_lock); 1867 spin_lock(&dcache_lock);
1869 res = __d_path(dentry, vfsmnt, root.dentry, root.mnt, buf, buflen); 1868 res = __d_path(dentry, vfsmnt, &root, buf, buflen);
1870 spin_unlock(&dcache_lock); 1869 spin_unlock(&dcache_lock);
1871 path_put(&root); 1870 path_put(&root);
1872 return res; 1871 return res;
@@ -1934,8 +1933,7 @@ asmlinkage long sys_getcwd(char __user *buf, unsigned long size)
1934 unsigned long len; 1933 unsigned long len;
1935 char * cwd; 1934 char * cwd;
1936 1935
1937 cwd = __d_path(pwd.dentry, pwd.mnt, root.dentry, root.mnt, 1936 cwd = __d_path(pwd.dentry, pwd.mnt, &root, page, PAGE_SIZE);
1938 page, PAGE_SIZE);
1939 spin_unlock(&dcache_lock); 1937 spin_unlock(&dcache_lock);
1940 1938
1941 error = PTR_ERR(cwd); 1939 error = PTR_ERR(cwd);