summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2015-01-29 13:02:31 +0100
committerAl Viro <viro@zeniv.linux.org.uk>2015-02-22 17:38:39 +0100
commit729b8a3dee2bc873e4647e9384de9111548e599e (patch)
tree68e36ab6d1e2cde74df58097af1e8f62b72cdf22
parentApparmor: mediated_filesystem() should use dentry->d_sb not inode->i_sb (diff)
downloadlinux-729b8a3dee2bc873e4647e9384de9111548e599e.tar.xz
linux-729b8a3dee2bc873e4647e9384de9111548e599e.zip
Apparmor: Use d_is_positive/negative() rather than testing dentry->d_inode
Use d_is_positive(dentry) or d_is_negative(dentry) rather than testing dentry->d_inode as the dentry may cover another layer that has an inode when the top layer doesn't or may hold a 0,0 chardev that's actually a whiteout. Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r--security/apparmor/path.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/security/apparmor/path.c b/security/apparmor/path.c
index 35b394a75d76..71e0e3a15b9d 100644
--- a/security/apparmor/path.c
+++ b/security/apparmor/path.c
@@ -114,7 +114,7 @@ static int d_namespace_path(struct path *path, char *buf, int buflen,
* security_path hooks as a deleted dentry except without an inode
* allocated.
*/
- if (d_unlinked(path->dentry) && path->dentry->d_inode &&
+ if (d_unlinked(path->dentry) && d_is_positive(path->dentry) &&
!(flags & PATH_MEDIATE_DELETED)) {
error = -ENOENT;
goto out;