aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--security/smack/smack.h1
-rw-r--r--security/smack/smack_access.c7
-rw-r--r--security/smack/smack_lsm.c29
-rw-r--r--security/smack/smackfs.c3
4 files changed, 4 insertions, 36 deletions
diff --git a/security/smack/smack.h b/security/smack/smack.h
index 51fd30192c08..77abe2efacae 100644
--- a/security/smack/smack.h
+++ b/security/smack/smack.h
@@ -336,7 +336,6 @@ extern int smack_ptrace_rule;
336extern struct smack_known smack_known_floor; 336extern struct smack_known smack_known_floor;
337extern struct smack_known smack_known_hat; 337extern struct smack_known smack_known_hat;
338extern struct smack_known smack_known_huh; 338extern struct smack_known smack_known_huh;
339extern struct smack_known smack_known_invalid;
340extern struct smack_known smack_known_star; 339extern struct smack_known smack_known_star;
341extern struct smack_known smack_known_web; 340extern struct smack_known smack_known_web;
342 341
diff --git a/security/smack/smack_access.c b/security/smack/smack_access.c
index 23e5808a0970..356e3764cad9 100644
--- a/security/smack/smack_access.c
+++ b/security/smack/smack_access.c
@@ -36,11 +36,6 @@ struct smack_known smack_known_floor = {
36 .smk_secid = 5, 36 .smk_secid = 5,
37}; 37};
38 38
39struct smack_known smack_known_invalid = {
40 .smk_known = "",
41 .smk_secid = 6,
42};
43
44struct smack_known smack_known_web = { 39struct smack_known smack_known_web = {
45 .smk_known = "@", 40 .smk_known = "@",
46 .smk_secid = 7, 41 .smk_secid = 7,
@@ -615,7 +610,7 @@ struct smack_known *smack_from_secid(const u32 secid)
615 * of a secid that is not on the list. 610 * of a secid that is not on the list.
616 */ 611 */
617 rcu_read_unlock(); 612 rcu_read_unlock();
618 return &smack_known_invalid; 613 return &smack_known_huh;
619} 614}
620 615
621/* 616/*
diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
index 46d8be434466..4d90257d03ad 100644
--- a/security/smack/smack_lsm.c
+++ b/security/smack/smack_lsm.c
@@ -1384,20 +1384,14 @@ static void smack_inode_post_setxattr(struct dentry *dentry, const char *name,
1384 skp = smk_import_entry(value, size); 1384 skp = smk_import_entry(value, size);
1385 if (!IS_ERR(skp)) 1385 if (!IS_ERR(skp))
1386 isp->smk_inode = skp; 1386 isp->smk_inode = skp;
1387 else
1388 isp->smk_inode = &smack_known_invalid;
1389 } else if (strcmp(name, XATTR_NAME_SMACKEXEC) == 0) { 1387 } else if (strcmp(name, XATTR_NAME_SMACKEXEC) == 0) {
1390 skp = smk_import_entry(value, size); 1388 skp = smk_import_entry(value, size);
1391 if (!IS_ERR(skp)) 1389 if (!IS_ERR(skp))
1392 isp->smk_task = skp; 1390 isp->smk_task = skp;
1393 else
1394 isp->smk_task = &smack_known_invalid;
1395 } else if (strcmp(name, XATTR_NAME_SMACKMMAP) == 0) { 1391 } else if (strcmp(name, XATTR_NAME_SMACKMMAP) == 0) {
1396 skp = smk_import_entry(value, size); 1392 skp = smk_import_entry(value, size);
1397 if (!IS_ERR(skp)) 1393 if (!IS_ERR(skp))
1398 isp->smk_mmap = skp; 1394 isp->smk_mmap = skp;
1399 else
1400 isp->smk_mmap = &smack_known_invalid;
1401 } 1395 }
1402 1396
1403 return; 1397 return;
@@ -2068,12 +2062,8 @@ static void smack_cred_transfer(struct cred *new, const struct cred *old)
2068static int smack_kernel_act_as(struct cred *new, u32 secid) 2062static int smack_kernel_act_as(struct cred *new, u32 secid)
2069{ 2063{
2070 struct task_smack *new_tsp = new->security; 2064 struct task_smack *new_tsp = new->security;
2071 struct smack_known *skp = smack_from_secid(secid);
2072
2073 if (skp == NULL)
2074 return -EINVAL;
2075 2065
2076 new_tsp->smk_task = skp; 2066 new_tsp->smk_task = smack_from_secid(secid);
2077 return 0; 2067 return 0;
2078} 2068}
2079 2069
@@ -3894,21 +3884,11 @@ static struct smack_known *smack_from_secattr(struct netlbl_lsm_secattr *sap,
3894 return &smack_known_web; 3884 return &smack_known_web;
3895 return &smack_known_star; 3885 return &smack_known_star;
3896 } 3886 }
3897 if ((sap->flags & NETLBL_SECATTR_SECID) != 0) { 3887 if ((sap->flags & NETLBL_SECATTR_SECID) != 0)
3898 /* 3888 /*
3899 * Looks like a fallback, which gives us a secid. 3889 * Looks like a fallback, which gives us a secid.
3900 */ 3890 */
3901 skp = smack_from_secid(sap->attr.secid); 3891 return smack_from_secid(sap->attr.secid);
3902 /*
3903 * This has got to be a bug because it is
3904 * impossible to specify a fallback without
3905 * specifying the label, which will ensure
3906 * it has a secid, and the only way to get a
3907 * secid is from a fallback.
3908 */
3909 BUG_ON(skp == NULL);
3910 return skp;
3911 }
3912 /* 3892 /*
3913 * Without guidance regarding the smack value 3893 * Without guidance regarding the smack value
3914 * for the packet fall back on the network 3894 * for the packet fall back on the network
@@ -4771,7 +4751,6 @@ static __init void init_smack_known_list(void)
4771 mutex_init(&smack_known_hat.smk_rules_lock); 4751 mutex_init(&smack_known_hat.smk_rules_lock);
4772 mutex_init(&smack_known_floor.smk_rules_lock); 4752 mutex_init(&smack_known_floor.smk_rules_lock);
4773 mutex_init(&smack_known_star.smk_rules_lock); 4753 mutex_init(&smack_known_star.smk_rules_lock);
4774 mutex_init(&smack_known_invalid.smk_rules_lock);
4775 mutex_init(&smack_known_web.smk_rules_lock); 4754 mutex_init(&smack_known_web.smk_rules_lock);
4776 /* 4755 /*
4777 * Initialize rule lists 4756 * Initialize rule lists
@@ -4780,7 +4759,6 @@ static __init void init_smack_known_list(void)
4780 INIT_LIST_HEAD(&smack_known_hat.smk_rules); 4759 INIT_LIST_HEAD(&smack_known_hat.smk_rules);
4781 INIT_LIST_HEAD(&smack_known_star.smk_rules); 4760 INIT_LIST_HEAD(&smack_known_star.smk_rules);
4782 INIT_LIST_HEAD(&smack_known_floor.smk_rules); 4761 INIT_LIST_HEAD(&smack_known_floor.smk_rules);
4783 INIT_LIST_HEAD(&smack_known_invalid.smk_rules);
4784 INIT_LIST_HEAD(&smack_known_web.smk_rules); 4762 INIT_LIST_HEAD(&smack_known_web.smk_rules);
4785 /* 4763 /*
4786 * Create the known labels list 4764 * Create the known labels list
@@ -4789,7 +4767,6 @@ static __init void init_smack_known_list(void)
4789 smk_insert_entry(&smack_known_hat); 4767 smk_insert_entry(&smack_known_hat);
4790 smk_insert_entry(&smack_known_star); 4768 smk_insert_entry(&smack_known_star);
4791 smk_insert_entry(&smack_known_floor); 4769 smk_insert_entry(&smack_known_floor);
4792 smk_insert_entry(&smack_known_invalid);
4793 smk_insert_entry(&smack_known_web); 4770 smk_insert_entry(&smack_known_web);
4794} 4771}
4795 4772
diff --git a/security/smack/smackfs.c b/security/smack/smackfs.c
index 6492fe96cae4..13743a01b35b 100644
--- a/security/smack/smackfs.c
+++ b/security/smack/smackfs.c
@@ -2998,9 +2998,6 @@ static int __init init_smk_fs(void)
2998 rc = smk_preset_netlabel(&smack_known_huh); 2998 rc = smk_preset_netlabel(&smack_known_huh);
2999 if (err == 0 && rc < 0) 2999 if (err == 0 && rc < 0)
3000 err = rc; 3000 err = rc;
3001 rc = smk_preset_netlabel(&smack_known_invalid);
3002 if (err == 0 && rc < 0)
3003 err = rc;
3004 rc = smk_preset_netlabel(&smack_known_star); 3001 rc = smk_preset_netlabel(&smack_known_star);
3005 if (err == 0 && rc < 0) 3002 if (err == 0 && rc < 0)
3006 err = rc; 3003 err = rc;