Skip to content

Commit

Permalink
apparmor: fix long path failure due to disconnected path
Browse files Browse the repository at this point in the history
BugLink: http://bugs.launchpad.net/bugs/955892

All failures from __d_path where being treated as disconnected paths,
however __d_path can also fail when the generated pathname is too long.

The initial ENAMETOOLONG error was being lost, and ENAMETOOLONG was only
returned if the subsequent dentry_path call resulted in that error.  Other
wise if the path was split across a mount point such that the dentry_path
fit within the buffer when the __d_path did not the failure was treated
as a disconnected path.

Signed-off-by: John Johansen <john.johansen@canonical.com>
  • Loading branch information
John Johansen committed May 18, 2012
1 parent bf83208 commit cffee16
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions security/apparmor/path.c
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,8 @@ static int d_namespace_path(struct path *path, char *buf, int buflen,
* be returned.
*/
if (!res || IS_ERR(res)) {
if (PTR_ERR(res) == -ENAMETOOLONG)
return -ENAMETOOLONG;
connected = 0;
res = dentry_path_raw(path->dentry, buf, buflen);
if (IS_ERR(res)) {
Expand Down

0 comments on commit cffee16

Please sign in to comment.