Commit 1418a3e5ad4d01b1d4abf2c479c50b0cedd59e3f
Committed by
Linus Torvalds
1 parent
34a9d2c39a
Exists in
master
and in
6 other branches
TOMOYO: Fix pathname handling of disconnected paths.
Current tomoyo_realpath_from_path() implementation returns strange pathname when calculating pathname of a file which belongs to lazy unmounted tree. Use local pathname rather than strange absolute pathname in that case. Also, this patch fixes a regression by commit 02125a82 "fix apparmor dereferencing potentially freed dentry, sanitize __d_path() API". Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Acked-by: Al Viro <viro@zeniv.linux.org.uk> Cc: stable@vger.kernel.org Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 1 changed file with 9 additions and 1 deletions Side-by-side Diff
security/tomoyo/realpath.c
... | ... | @@ -293,8 +293,16 @@ |
293 | 293 | pos = tomoyo_get_local_path(path->dentry, buf, |
294 | 294 | buf_len - 1); |
295 | 295 | /* Get absolute name for the rest. */ |
296 | - else | |
296 | + else { | |
297 | 297 | pos = tomoyo_get_absolute_path(path, buf, buf_len - 1); |
298 | + /* | |
299 | + * Fall back to local name if absolute name is not | |
300 | + * available. | |
301 | + */ | |
302 | + if (pos == ERR_PTR(-EINVAL)) | |
303 | + pos = tomoyo_get_local_path(path->dentry, buf, | |
304 | + buf_len - 1); | |
305 | + } | |
298 | 306 | encode: |
299 | 307 | if (IS_ERR(pos)) |
300 | 308 | continue; |