diff options
-rw-r--r-- | fs/dcache.c | 12 |
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 | */ |
1779 | static char * __d_path( struct dentry *dentry, struct vfsmount *vfsmnt, | 1779 | static 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(¤t->fs->root); | 1865 | path_get(¤t->fs->root); |
1867 | read_unlock(¤t->fs->lock); | 1866 | read_unlock(¤t->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); |