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); |
