aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCasey Schaufler <casey@schaufler-ca.com>2014-04-28 18:23:01 -0400
committerCasey Schaufler <casey@schaufler-ca.com>2014-04-30 13:49:33 -0400
commit36ea735b522d09826ae0dac0e540f294436c52f3 (patch)
tree1ac278374b75442609e8245f55059e53005cbece
parenta6834c0b9114c06106efee8e9f2a11fbbb104567 (diff)
Smack: Label cgroup files for systemd
The cgroup filesystem isn't ready for an LSM to properly use extented attributes. This patch makes files created in the cgroup filesystem usable by a system running Smack and systemd. Targeted for git://git.gitorious.org/smack-next/kernel.git Signed-off-by: Casey Schaufler <casey@schaufler-ca.com>
-rw-r--r--security/smack/smack_lsm.c30
1 files changed, 18 insertions, 12 deletions
diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
index 7bcf9edf768d..9cb7559d60b2 100644
--- a/security/smack/smack_lsm.c
+++ b/security/smack/smack_lsm.c
@@ -2821,6 +2821,15 @@ static void smack_d_instantiate(struct dentry *opt_dentry, struct inode *inode)
2821 * of the superblock. 2821 * of the superblock.
2822 */ 2822 */
2823 if (opt_dentry->d_parent == opt_dentry) { 2823 if (opt_dentry->d_parent == opt_dentry) {
2824 if (sbp->s_magic == CGROUP_SUPER_MAGIC) {
2825 /*
2826 * The cgroup filesystem is never mounted,
2827 * so there's no opportunity to set the mount
2828 * options.
2829 */
2830 sbsp->smk_root = smack_known_star.smk_known;
2831 sbsp->smk_default = smack_known_star.smk_known;
2832 }
2824 isp->smk_inode = sbsp->smk_root; 2833 isp->smk_inode = sbsp->smk_root;
2825 isp->smk_flags |= SMK_INODE_INSTANT; 2834 isp->smk_flags |= SMK_INODE_INSTANT;
2826 goto unlockandout; 2835 goto unlockandout;
@@ -2834,16 +2843,20 @@ static void smack_d_instantiate(struct dentry *opt_dentry, struct inode *inode)
2834 */ 2843 */
2835 switch (sbp->s_magic) { 2844 switch (sbp->s_magic) {
2836 case SMACK_MAGIC: 2845 case SMACK_MAGIC:
2846 case PIPEFS_MAGIC:
2847 case SOCKFS_MAGIC:
2848 case CGROUP_SUPER_MAGIC:
2837 /* 2849 /*
2838 * Casey says that it's a little embarrassing 2850 * Casey says that it's a little embarrassing
2839 * that the smack file system doesn't do 2851 * that the smack file system doesn't do
2840 * extended attributes. 2852 * extended attributes.
2841 */ 2853 *
2842 final = smack_known_star.smk_known;
2843 break;
2844 case PIPEFS_MAGIC:
2845 /*
2846 * Casey says pipes are easy (?) 2854 * Casey says pipes are easy (?)
2855 *
2856 * Socket access is controlled by the socket
2857 * structures associated with the task involved.
2858 *
2859 * Cgroupfs is special
2847 */ 2860 */
2848 final = smack_known_star.smk_known; 2861 final = smack_known_star.smk_known;
2849 break; 2862 break;
@@ -2855,13 +2868,6 @@ static void smack_d_instantiate(struct dentry *opt_dentry, struct inode *inode)
2855 */ 2868 */
2856 final = ckp->smk_known; 2869 final = ckp->smk_known;
2857 break; 2870 break;
2858 case SOCKFS_MAGIC:
2859 /*
2860 * Socket access is controlled by the socket
2861 * structures associated with the task involved.
2862 */
2863 final = smack_known_star.smk_known;
2864 break;
2865 case PROC_SUPER_MAGIC: 2871 case PROC_SUPER_MAGIC:
2866 /* 2872 /*
2867 * Casey says procfs appears not to care. 2873 * Casey says procfs appears not to care.