aboutsummaryrefslogtreecommitdiffstats
path: root/security/selinux/hooks.c
diff options
context:
space:
mode:
Diffstat (limited to 'security/selinux/hooks.c')
-rw-r--r--security/selinux/hooks.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
index be5817df0a9d..179dd20bec0a 100644
--- a/security/selinux/hooks.c
+++ b/security/selinux/hooks.c
@@ -1568,8 +1568,15 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent
1568 /* Called from d_instantiate or d_splice_alias. */ 1568 /* Called from d_instantiate or d_splice_alias. */
1569 dentry = dget(opt_dentry); 1569 dentry = dget(opt_dentry);
1570 } else { 1570 } else {
1571 /* Called from selinux_complete_init, try to find a dentry. */ 1571 /*
1572 * Called from selinux_complete_init, try to find a dentry.
1573 * Some filesystems really want a connected one, so try
1574 * that first. We could split SECURITY_FS_USE_XATTR in
1575 * two, depending upon that...
1576 */
1572 dentry = d_find_alias(inode); 1577 dentry = d_find_alias(inode);
1578 if (!dentry)
1579 dentry = d_find_any_alias(inode);
1573 } 1580 }
1574 if (!dentry) { 1581 if (!dentry) {
1575 /* 1582 /*
@@ -1674,14 +1681,19 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent
1674 if ((sbsec->flags & SE_SBGENFS) && !S_ISLNK(inode->i_mode)) { 1681 if ((sbsec->flags & SE_SBGENFS) && !S_ISLNK(inode->i_mode)) {
1675 /* We must have a dentry to determine the label on 1682 /* We must have a dentry to determine the label on
1676 * procfs inodes */ 1683 * procfs inodes */
1677 if (opt_dentry) 1684 if (opt_dentry) {
1678 /* Called from d_instantiate or 1685 /* Called from d_instantiate or
1679 * d_splice_alias. */ 1686 * d_splice_alias. */
1680 dentry = dget(opt_dentry); 1687 dentry = dget(opt_dentry);
1681 else 1688 } else {
1682 /* Called from selinux_complete_init, try to 1689 /* Called from selinux_complete_init, try to
1683 * find a dentry. */ 1690 * find a dentry. Some filesystems really want
1691 * a connected one, so try that first.
1692 */
1684 dentry = d_find_alias(inode); 1693 dentry = d_find_alias(inode);
1694 if (!dentry)
1695 dentry = d_find_any_alias(inode);
1696 }
1685 /* 1697 /*
1686 * This can be hit on boot when a file is accessed 1698 * This can be hit on boot when a file is accessed
1687 * before the policy is loaded. When we load policy we 1699 * before the policy is loaded. When we load policy we