diff options
-rw-r--r-- | fs/dcache.c | 6 | ||||
-rw-r--r-- | fs/seq_file.c | 2 | ||||
-rw-r--r-- | security/apparmor/path.c | 2 | ||||
-rw-r--r-- | security/tomoyo/realpath.c | 2 |
4 files changed, 4 insertions, 8 deletions
diff --git a/fs/dcache.c b/fs/dcache.c index 83293be48149..54f93f5e6b0f 100644 --- a/fs/dcache.c +++ b/fs/dcache.c | |||
@@ -1994,7 +1994,7 @@ global_root: | |||
1994 | * Returns a pointer into the buffer or an error code if the | 1994 | * Returns a pointer into the buffer or an error code if the |
1995 | * path was too long. | 1995 | * path was too long. |
1996 | * | 1996 | * |
1997 | * "buflen" should be positive. Caller holds the dcache_lock. | 1997 | * "buflen" should be positive. |
1998 | * | 1998 | * |
1999 | * If path is not reachable from the supplied root, then the value of | 1999 | * If path is not reachable from the supplied root, then the value of |
2000 | * root is changed (without modifying refcounts). | 2000 | * root is changed (without modifying refcounts). |
@@ -2006,10 +2006,12 @@ char *__d_path(const struct path *path, struct path *root, | |||
2006 | int error; | 2006 | int error; |
2007 | 2007 | ||
2008 | prepend(&res, &buflen, "\0", 1); | 2008 | prepend(&res, &buflen, "\0", 1); |
2009 | spin_lock(&dcache_lock); | ||
2009 | error = prepend_path(path, root, &res, &buflen); | 2010 | error = prepend_path(path, root, &res, &buflen); |
2011 | spin_unlock(&dcache_lock); | ||
2012 | |||
2010 | if (error) | 2013 | if (error) |
2011 | return ERR_PTR(error); | 2014 | return ERR_PTR(error); |
2012 | |||
2013 | return res; | 2015 | return res; |
2014 | } | 2016 | } |
2015 | 2017 | ||
diff --git a/fs/seq_file.c b/fs/seq_file.c index 0e7cb1395a94..05d6b0e78c95 100644 --- a/fs/seq_file.c +++ b/fs/seq_file.c | |||
@@ -462,9 +462,7 @@ int seq_path_root(struct seq_file *m, struct path *path, struct path *root, | |||
462 | if (size) { | 462 | if (size) { |
463 | char *p; | 463 | char *p; |
464 | 464 | ||
465 | spin_lock(&dcache_lock); | ||
466 | p = __d_path(path, root, buf, size); | 465 | p = __d_path(path, root, buf, size); |
467 | spin_unlock(&dcache_lock); | ||
468 | res = PTR_ERR(p); | 466 | res = PTR_ERR(p); |
469 | if (!IS_ERR(p)) { | 467 | if (!IS_ERR(p)) { |
470 | char *end = mangle_path(buf, p, esc); | 468 | char *end = mangle_path(buf, p, esc); |
diff --git a/security/apparmor/path.c b/security/apparmor/path.c index 82396050f186..36cc0cc39e78 100644 --- a/security/apparmor/path.c +++ b/security/apparmor/path.c | |||
@@ -72,10 +72,8 @@ static int d_namespace_path(struct path *path, char *buf, int buflen, | |||
72 | path_get(&root); | 72 | path_get(&root); |
73 | } | 73 | } |
74 | 74 | ||
75 | spin_lock(&dcache_lock); | ||
76 | tmp = root; | 75 | tmp = root; |
77 | res = __d_path(path, &tmp, buf, buflen); | 76 | res = __d_path(path, &tmp, buf, buflen); |
78 | spin_unlock(&dcache_lock); | ||
79 | 77 | ||
80 | *name = res; | 78 | *name = res; |
81 | /* handle error conditions - and still allow a partial path to | 79 | /* handle error conditions - and still allow a partial path to |
diff --git a/security/tomoyo/realpath.c b/security/tomoyo/realpath.c index ed8ccd680102..1d0bf8fa1922 100644 --- a/security/tomoyo/realpath.c +++ b/security/tomoyo/realpath.c | |||
@@ -127,10 +127,8 @@ char *tomoyo_realpath_from_path(struct path *path) | |||
127 | /* If we don't have a vfsmount, we can't calculate. */ | 127 | /* If we don't have a vfsmount, we can't calculate. */ |
128 | if (!path->mnt) | 128 | if (!path->mnt) |
129 | break; | 129 | break; |
130 | spin_lock(&dcache_lock); | ||
131 | /* go to whatever namespace root we are under */ | 130 | /* go to whatever namespace root we are under */ |
132 | pos = __d_path(path, &ns_root, buf, buf_len); | 131 | pos = __d_path(path, &ns_root, buf, buf_len); |
133 | spin_unlock(&dcache_lock); | ||
134 | /* Prepend "/proc" prefix if using internal proc vfs mount. */ | 132 | /* Prepend "/proc" prefix if using internal proc vfs mount. */ |
135 | if (!IS_ERR(pos) && (path->mnt->mnt_flags & MNT_INTERNAL) && | 133 | if (!IS_ERR(pos) && (path->mnt->mnt_flags & MNT_INTERNAL) && |
136 | (path->mnt->mnt_sb->s_magic == PROC_SUPER_MAGIC)) { | 134 | (path->mnt->mnt_sb->s_magic == PROC_SUPER_MAGIC)) { |