SELinux: Use d_is_positive() rather than testing dentry->d_inode
authorDavid Howells <dhowells@redhat.com>
Thu, 29 Jan 2015 12:02:33 +0000 (12:02 +0000)
committerAl Viro <viro@zeniv.linux.org.uk>
Sun, 22 Feb 2015 16:38:40 +0000 (11:38 -0500)
Use d_is_positive() rather than testing dentry->d_inode in SELinux to get rid
of direct references to d_inode outside of the VFS.

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
security/selinux/hooks.c

index 29c39e0b03ed7e3048d5fed858f31d40dc2f8d3d..79f2c2cb68ad637d1db6c1cbc3a56ea93943cde2 100644 (file)
@@ -1822,12 +1822,12 @@ static inline int may_rename(struct inode *old_dir,
 
        ad.u.dentry = new_dentry;
        av = DIR__ADD_NAME | DIR__SEARCH;
-       if (new_dentry->d_inode)
+       if (d_is_positive(new_dentry))
                av |= DIR__REMOVE_NAME;
        rc = avc_has_perm(sid, new_dsec->sid, SECCLASS_DIR, av, &ad);
        if (rc)
                return rc;
-       if (new_dentry->d_inode) {
+       if (d_is_positive(new_dentry)) {
                new_isec = new_dentry->d_inode->i_security;
                new_is_dir = S_ISDIR(new_dentry->d_inode->i_mode);
                rc = avc_has_perm(sid, new_isec->sid,