diff options
| author | Olof Johansson <olof@lixom.net> | 2011-12-22 09:22:58 -0800 |
|---|---|---|
| committer | Olof Johansson <olof@lixom.net> | 2011-12-22 09:22:58 -0800 |
| commit | 53bf82ce766b17436a6e9c672f9fa29702f3731e (patch) | |
| tree | 50547bbc8d5c9f9156f1220b712a99e48dbaf43f /security/tomoyo/realpath.c | |
| parent | 5e8d3183bb605a937fc89b857691f75682aa099e (diff) | |
| parent | 4a4de1d9b47156525ceb46c7faf6ae4042d90aa7 (diff) | |
Merge branch 'omap/fixes-hwmod' into next/fixes-non-critical
* omap/fixes-hwmod: (359 commits)
ARM: OMAP: hwmod data: fix the panic on Nokia RM-680 during boot
ARM: OMAP: hwmod data: fix iva and mailbox hwmods for OMAP 3
ARM: OMAP: rx51: fix USB
ARM: OMAP: mcbsp: Fix possible memory corruption
...
Diffstat (limited to 'security/tomoyo/realpath.c')
| -rw-r--r-- | security/tomoyo/realpath.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/security/tomoyo/realpath.c b/security/tomoyo/realpath.c index 738bbdf8d4c7..d9f3ced8756e 100644 --- a/security/tomoyo/realpath.c +++ b/security/tomoyo/realpath.c @@ -101,9 +101,8 @@ static char *tomoyo_get_absolute_path(struct path *path, char * const buffer, { char *pos = ERR_PTR(-ENOMEM); if (buflen >= 256) { - struct path ns_root = { }; /* go to whatever namespace root we are under */ - pos = __d_path(path, &ns_root, buffer, buflen - 1); + pos = d_absolute_path(path, buffer, buflen - 1); if (!IS_ERR(pos) && *pos == '/' && pos[1]) { struct inode *inode = path->dentry->d_inode; if (inode && S_ISDIR(inode->i_mode)) { @@ -294,8 +293,16 @@ char *tomoyo_realpath_from_path(struct path *path) pos = tomoyo_get_local_path(path->dentry, buf, buf_len - 1); /* Get absolute name for the rest. */ - else + else { pos = tomoyo_get_absolute_path(path, buf, buf_len - 1); + /* + * Fall back to local name if absolute name is not + * available. + */ + if (pos == ERR_PTR(-EINVAL)) + pos = tomoyo_get_local_path(path->dentry, buf, + buf_len - 1); + } encode: if (IS_ERR(pos)) continue; |
