aboutsummaryrefslogtreecommitdiffstats
path: root/security/selinux
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2015-03-17 18:26:22 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2015-04-15 15:06:56 -0400
commitc6f493d631c4d40cea5c36055f9148f547b200af (patch)
tree233b04dca85cd796dffe1284a55b1fba24d0d59a /security/selinux
parentc5ef60352893b139147b7c033354e8e028e7f52a (diff)
VFS: security/: d_backing_inode() annotations
most of the ->d_inode uses there refer to the same inode IO would go to, i.e. d_backing_inode() Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'security/selinux')
-rw-r--r--security/selinux/hooks.c36
1 files changed, 18 insertions, 18 deletions
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
index c318b304ee2f..7dade28affba 100644
--- a/security/selinux/hooks.c
+++ b/security/selinux/hooks.c
@@ -414,7 +414,7 @@ static int sb_finish_set_opts(struct super_block *sb)
414{ 414{
415 struct superblock_security_struct *sbsec = sb->s_security; 415 struct superblock_security_struct *sbsec = sb->s_security;
416 struct dentry *root = sb->s_root; 416 struct dentry *root = sb->s_root;
417 struct inode *root_inode = root->d_inode; 417 struct inode *root_inode = d_backing_inode(root);
418 int rc = 0; 418 int rc = 0;
419 419
420 if (sbsec->behavior == SECURITY_FS_USE_XATTR) { 420 if (sbsec->behavior == SECURITY_FS_USE_XATTR) {
@@ -552,7 +552,7 @@ static int selinux_get_mnt_opts(const struct super_block *sb,
552 opts->mnt_opts_flags[i++] = DEFCONTEXT_MNT; 552 opts->mnt_opts_flags[i++] = DEFCONTEXT_MNT;
553 } 553 }
554 if (sbsec->flags & ROOTCONTEXT_MNT) { 554 if (sbsec->flags & ROOTCONTEXT_MNT) {
555 struct inode *root = sbsec->sb->s_root->d_inode; 555 struct inode *root = d_backing_inode(sbsec->sb->s_root);
556 struct inode_security_struct *isec = root->i_security; 556 struct inode_security_struct *isec = root->i_security;
557 557
558 rc = security_sid_to_context(isec->sid, &context, &len); 558 rc = security_sid_to_context(isec->sid, &context, &len);
@@ -608,7 +608,7 @@ static int selinux_set_mnt_opts(struct super_block *sb,
608 int rc = 0, i; 608 int rc = 0, i;
609 struct superblock_security_struct *sbsec = sb->s_security; 609 struct superblock_security_struct *sbsec = sb->s_security;
610 const char *name = sb->s_type->name; 610 const char *name = sb->s_type->name;
611 struct inode *inode = sbsec->sb->s_root->d_inode; 611 struct inode *inode = d_backing_inode(sbsec->sb->s_root);
612 struct inode_security_struct *root_isec = inode->i_security; 612 struct inode_security_struct *root_isec = inode->i_security;
613 u32 fscontext_sid = 0, context_sid = 0, rootcontext_sid = 0; 613 u32 fscontext_sid = 0, context_sid = 0, rootcontext_sid = 0;
614 u32 defcontext_sid = 0; 614 u32 defcontext_sid = 0;
@@ -835,8 +835,8 @@ static int selinux_cmp_sb_context(const struct super_block *oldsb,
835 if ((oldflags & DEFCONTEXT_MNT) && old->def_sid != new->def_sid) 835 if ((oldflags & DEFCONTEXT_MNT) && old->def_sid != new->def_sid)
836 goto mismatch; 836 goto mismatch;
837 if (oldflags & ROOTCONTEXT_MNT) { 837 if (oldflags & ROOTCONTEXT_MNT) {
838 struct inode_security_struct *oldroot = oldsb->s_root->d_inode->i_security; 838 struct inode_security_struct *oldroot = d_backing_inode(oldsb->s_root)->i_security;
839 struct inode_security_struct *newroot = newsb->s_root->d_inode->i_security; 839 struct inode_security_struct *newroot = d_backing_inode(newsb->s_root)->i_security;
840 if (oldroot->sid != newroot->sid) 840 if (oldroot->sid != newroot->sid)
841 goto mismatch; 841 goto mismatch;
842 } 842 }
@@ -886,16 +886,16 @@ static int selinux_sb_clone_mnt_opts(const struct super_block *oldsb,
886 if (!set_fscontext) 886 if (!set_fscontext)
887 newsbsec->sid = sid; 887 newsbsec->sid = sid;
888 if (!set_rootcontext) { 888 if (!set_rootcontext) {
889 struct inode *newinode = newsb->s_root->d_inode; 889 struct inode *newinode = d_backing_inode(newsb->s_root);
890 struct inode_security_struct *newisec = newinode->i_security; 890 struct inode_security_struct *newisec = newinode->i_security;
891 newisec->sid = sid; 891 newisec->sid = sid;
892 } 892 }
893 newsbsec->mntpoint_sid = sid; 893 newsbsec->mntpoint_sid = sid;
894 } 894 }
895 if (set_rootcontext) { 895 if (set_rootcontext) {
896 const struct inode *oldinode = oldsb->s_root->d_inode; 896 const struct inode *oldinode = d_backing_inode(oldsb->s_root);
897 const struct inode_security_struct *oldisec = oldinode->i_security; 897 const struct inode_security_struct *oldisec = oldinode->i_security;
898 struct inode *newinode = newsb->s_root->d_inode; 898 struct inode *newinode = d_backing_inode(newsb->s_root);
899 struct inode_security_struct *newisec = newinode->i_security; 899 struct inode_security_struct *newisec = newinode->i_security;
900 900
901 newisec->sid = oldisec->sid; 901 newisec->sid = oldisec->sid;
@@ -1610,7 +1610,7 @@ static inline int dentry_has_perm(const struct cred *cred,
1610 struct dentry *dentry, 1610 struct dentry *dentry,
1611 u32 av) 1611 u32 av)
1612{ 1612{
1613 struct inode *inode = dentry->d_inode; 1613 struct inode *inode = d_backing_inode(dentry);
1614 struct common_audit_data ad; 1614 struct common_audit_data ad;
1615 1615
1616 ad.type = LSM_AUDIT_DATA_DENTRY; 1616 ad.type = LSM_AUDIT_DATA_DENTRY;
@@ -1625,7 +1625,7 @@ static inline int path_has_perm(const struct cred *cred,
1625 const struct path *path, 1625 const struct path *path,
1626 u32 av) 1626 u32 av)
1627{ 1627{
1628 struct inode *inode = path->dentry->d_inode; 1628 struct inode *inode = d_backing_inode(path->dentry);
1629 struct common_audit_data ad; 1629 struct common_audit_data ad;
1630 1630
1631 ad.type = LSM_AUDIT_DATA_PATH; 1631 ad.type = LSM_AUDIT_DATA_PATH;
@@ -1753,7 +1753,7 @@ static int may_link(struct inode *dir,
1753 int rc; 1753 int rc;
1754 1754
1755 dsec = dir->i_security; 1755 dsec = dir->i_security;
1756 isec = dentry->d_inode->i_security; 1756 isec = d_backing_inode(dentry)->i_security;
1757 1757
1758 ad.type = LSM_AUDIT_DATA_DENTRY; 1758 ad.type = LSM_AUDIT_DATA_DENTRY;
1759 ad.u.dentry = dentry; 1759 ad.u.dentry = dentry;
@@ -1797,7 +1797,7 @@ static inline int may_rename(struct inode *old_dir,
1797 int rc; 1797 int rc;
1798 1798
1799 old_dsec = old_dir->i_security; 1799 old_dsec = old_dir->i_security;
1800 old_isec = old_dentry->d_inode->i_security; 1800 old_isec = d_backing_inode(old_dentry)->i_security;
1801 old_is_dir = d_is_dir(old_dentry); 1801 old_is_dir = d_is_dir(old_dentry);
1802 new_dsec = new_dir->i_security; 1802 new_dsec = new_dir->i_security;
1803 1803
@@ -1827,7 +1827,7 @@ static inline int may_rename(struct inode *old_dir,
1827 if (rc) 1827 if (rc)
1828 return rc; 1828 return rc;
1829 if (d_is_positive(new_dentry)) { 1829 if (d_is_positive(new_dentry)) {
1830 new_isec = new_dentry->d_inode->i_security; 1830 new_isec = d_backing_inode(new_dentry)->i_security;
1831 new_is_dir = d_is_dir(new_dentry); 1831 new_is_dir = d_is_dir(new_dentry);
1832 rc = avc_has_perm(sid, new_isec->sid, 1832 rc = avc_has_perm(sid, new_isec->sid,
1833 new_isec->sclass, 1833 new_isec->sclass,
@@ -1963,7 +1963,7 @@ static int selinux_binder_transfer_file(struct task_struct *from,
1963{ 1963{
1964 u32 sid = task_sid(to); 1964 u32 sid = task_sid(to);
1965 struct file_security_struct *fsec = file->f_security; 1965 struct file_security_struct *fsec = file->f_security;
1966 struct inode *inode = file->f_path.dentry->d_inode; 1966 struct inode *inode = d_backing_inode(file->f_path.dentry);
1967 struct inode_security_struct *isec = inode->i_security; 1967 struct inode_security_struct *isec = inode->i_security;
1968 struct common_audit_data ad; 1968 struct common_audit_data ad;
1969 int rc; 1969 int rc;
@@ -2627,7 +2627,7 @@ static int selinux_sb_remount(struct super_block *sb, void *data)
2627 break; 2627 break;
2628 case ROOTCONTEXT_MNT: { 2628 case ROOTCONTEXT_MNT: {
2629 struct inode_security_struct *root_isec; 2629 struct inode_security_struct *root_isec;
2630 root_isec = sb->s_root->d_inode->i_security; 2630 root_isec = d_backing_inode(sb->s_root)->i_security;
2631 2631
2632 if (bad_option(sbsec, ROOTCONTEXT_MNT, root_isec->sid, sid)) 2632 if (bad_option(sbsec, ROOTCONTEXT_MNT, root_isec->sid, sid))
2633 goto out_bad_option; 2633 goto out_bad_option;
@@ -2727,7 +2727,7 @@ static int selinux_dentry_init_security(struct dentry *dentry, int mode,
2727 struct task_security_struct *tsec; 2727 struct task_security_struct *tsec;
2728 struct inode_security_struct *dsec; 2728 struct inode_security_struct *dsec;
2729 struct superblock_security_struct *sbsec; 2729 struct superblock_security_struct *sbsec;
2730 struct inode *dir = dentry->d_parent->d_inode; 2730 struct inode *dir = d_backing_inode(dentry->d_parent);
2731 u32 newsid; 2731 u32 newsid;
2732 int rc; 2732 int rc;
2733 2733
@@ -2982,7 +2982,7 @@ static int selinux_inode_setotherxattr(struct dentry *dentry, const char *name)
2982static int selinux_inode_setxattr(struct dentry *dentry, const char *name, 2982static int selinux_inode_setxattr(struct dentry *dentry, const char *name,
2983 const void *value, size_t size, int flags) 2983 const void *value, size_t size, int flags)
2984{ 2984{
2985 struct inode *inode = dentry->d_inode; 2985 struct inode *inode = d_backing_inode(dentry);
2986 struct inode_security_struct *isec = inode->i_security; 2986 struct inode_security_struct *isec = inode->i_security;
2987 struct superblock_security_struct *sbsec; 2987 struct superblock_security_struct *sbsec;
2988 struct common_audit_data ad; 2988 struct common_audit_data ad;
@@ -3059,7 +3059,7 @@ static void selinux_inode_post_setxattr(struct dentry *dentry, const char *name,
3059 const void *value, size_t size, 3059 const void *value, size_t size,
3060 int flags) 3060 int flags)
3061{ 3061{
3062 struct inode *inode = dentry->d_inode; 3062 struct inode *inode = d_backing_inode(dentry);
3063 struct inode_security_struct *isec = inode->i_security; 3063 struct inode_security_struct *isec = inode->i_security;
3064 u32 newsid; 3064 u32 newsid;
3065 int rc; 3065 int rc;