diff options
| -rw-r--r-- | security/selinux/hooks.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index a2d510895ff3..f9d398bc9dcd 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c | |||
| @@ -1808,13 +1808,13 @@ out: | |||
| 1808 | /* | 1808 | /* |
| 1809 | * Determine the label for an inode that might be unioned. | 1809 | * Determine the label for an inode that might be unioned. |
| 1810 | */ | 1810 | */ |
| 1811 | static int selinux_determine_inode_label(struct inode *dir, | 1811 | static int |
| 1812 | const struct qstr *name, | 1812 | selinux_determine_inode_label(const struct task_security_struct *tsec, |
| 1813 | u16 tclass, | 1813 | struct inode *dir, |
| 1814 | u32 *_new_isid) | 1814 | const struct qstr *name, u16 tclass, |
| 1815 | u32 *_new_isid) | ||
| 1815 | { | 1816 | { |
| 1816 | const struct superblock_security_struct *sbsec = dir->i_sb->s_security; | 1817 | const struct superblock_security_struct *sbsec = dir->i_sb->s_security; |
| 1817 | const struct task_security_struct *tsec = current_security(); | ||
| 1818 | 1818 | ||
| 1819 | if ((sbsec->flags & SE_SBINITIALIZED) && | 1819 | if ((sbsec->flags & SE_SBINITIALIZED) && |
| 1820 | (sbsec->behavior == SECURITY_FS_USE_MNTPOINT)) { | 1820 | (sbsec->behavior == SECURITY_FS_USE_MNTPOINT)) { |
| @@ -1857,8 +1857,8 @@ static int may_create(struct inode *dir, | |||
| 1857 | if (rc) | 1857 | if (rc) |
| 1858 | return rc; | 1858 | return rc; |
| 1859 | 1859 | ||
| 1860 | rc = selinux_determine_inode_label(dir, &dentry->d_name, tclass, | 1860 | rc = selinux_determine_inode_label(current_security(), dir, |
| 1861 | &newsid); | 1861 | &dentry->d_name, tclass, &newsid); |
| 1862 | if (rc) | 1862 | if (rc) |
| 1863 | return rc; | 1863 | return rc; |
| 1864 | 1864 | ||
| @@ -2838,7 +2838,8 @@ static int selinux_dentry_init_security(struct dentry *dentry, int mode, | |||
| 2838 | u32 newsid; | 2838 | u32 newsid; |
| 2839 | int rc; | 2839 | int rc; |
| 2840 | 2840 | ||
| 2841 | rc = selinux_determine_inode_label(d_inode(dentry->d_parent), name, | 2841 | rc = selinux_determine_inode_label(current_security(), |
| 2842 | d_inode(dentry->d_parent), name, | ||
| 2842 | inode_mode_to_security_class(mode), | 2843 | inode_mode_to_security_class(mode), |
| 2843 | &newsid); | 2844 | &newsid); |
| 2844 | if (rc) | 2845 | if (rc) |
| @@ -2863,7 +2864,7 @@ static int selinux_inode_init_security(struct inode *inode, struct inode *dir, | |||
| 2863 | sid = tsec->sid; | 2864 | sid = tsec->sid; |
| 2864 | newsid = tsec->create_sid; | 2865 | newsid = tsec->create_sid; |
| 2865 | 2866 | ||
| 2866 | rc = selinux_determine_inode_label( | 2867 | rc = selinux_determine_inode_label(current_security(), |
| 2867 | dir, qstr, | 2868 | dir, qstr, |
| 2868 | inode_mode_to_security_class(inode->i_mode), | 2869 | inode_mode_to_security_class(inode->i_mode), |
| 2869 | &newsid); | 2870 | &newsid); |
