diff options
author | Paul Moore <paul.moore@hp.com> | 2009-03-27 17:10:41 -0400 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2009-03-28 00:01:37 -0400 |
commit | 58bfbb51ff2b0fdc6c732ff3d72f50aa632b67a2 (patch) | |
tree | 41132587adbb6816b56b9d28105826b8ef0fd7b9 /security/selinux/selinuxfs.c | |
parent | 389fb800ac8be2832efedd19978a2b8ced37eb61 (diff) |
selinux: Remove the "compat_net" compatibility code
The SELinux "compat_net" is marked as deprecated, the time has come to
finally remove it from the kernel. Further code simplifications are
likely in the future, but this patch was intended to be a simple,
straight-up removal of the compat_net code.
Signed-off-by: Paul Moore <paul.moore@hp.com>
Signed-off-by: James Morris <jmorris@namei.org>
Diffstat (limited to 'security/selinux/selinuxfs.c')
-rw-r--r-- | security/selinux/selinuxfs.c | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c index d3c8b982cfb0..2d5136ec3d54 100644 --- a/security/selinux/selinuxfs.c +++ b/security/selinux/selinuxfs.c | |||
@@ -47,8 +47,6 @@ static char *policycap_names[] = { | |||
47 | 47 | ||
48 | unsigned int selinux_checkreqprot = CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE; | 48 | unsigned int selinux_checkreqprot = CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE; |
49 | 49 | ||
50 | int selinux_compat_net = 0; | ||
51 | |||
52 | static int __init checkreqprot_setup(char *str) | 50 | static int __init checkreqprot_setup(char *str) |
53 | { | 51 | { |
54 | unsigned long checkreqprot; | 52 | unsigned long checkreqprot; |
@@ -58,16 +56,6 @@ static int __init checkreqprot_setup(char *str) | |||
58 | } | 56 | } |
59 | __setup("checkreqprot=", checkreqprot_setup); | 57 | __setup("checkreqprot=", checkreqprot_setup); |
60 | 58 | ||
61 | static int __init selinux_compat_net_setup(char *str) | ||
62 | { | ||
63 | unsigned long compat_net; | ||
64 | if (!strict_strtoul(str, 0, &compat_net)) | ||
65 | selinux_compat_net = compat_net ? 1 : 0; | ||
66 | return 1; | ||
67 | } | ||
68 | __setup("selinux_compat_net=", selinux_compat_net_setup); | ||
69 | |||
70 | |||
71 | static DEFINE_MUTEX(sel_mutex); | 59 | static DEFINE_MUTEX(sel_mutex); |
72 | 60 | ||
73 | /* global data for booleans */ | 61 | /* global data for booleans */ |
@@ -450,61 +438,6 @@ static const struct file_operations sel_checkreqprot_ops = { | |||
450 | .write = sel_write_checkreqprot, | 438 | .write = sel_write_checkreqprot, |
451 | }; | 439 | }; |
452 | 440 | ||
453 | static ssize_t sel_read_compat_net(struct file *filp, char __user *buf, | ||
454 | size_t count, loff_t *ppos) | ||
455 | { | ||
456 | char tmpbuf[TMPBUFLEN]; | ||
457 | ssize_t length; | ||
458 | |||
459 | length = scnprintf(tmpbuf, TMPBUFLEN, "%d", selinux_compat_net); | ||
460 | return simple_read_from_buffer(buf, count, ppos, tmpbuf, length); | ||
461 | } | ||
462 | |||
463 | static ssize_t sel_write_compat_net(struct file *file, const char __user *buf, | ||
464 | size_t count, loff_t *ppos) | ||
465 | { | ||
466 | char *page; | ||
467 | ssize_t length; | ||
468 | int new_value; | ||
469 | |||
470 | length = task_has_security(current, SECURITY__LOAD_POLICY); | ||
471 | if (length) | ||
472 | return length; | ||
473 | |||
474 | if (count >= PAGE_SIZE) | ||
475 | return -ENOMEM; | ||
476 | if (*ppos != 0) { | ||
477 | /* No partial writes. */ | ||
478 | return -EINVAL; | ||
479 | } | ||
480 | page = (char *)get_zeroed_page(GFP_KERNEL); | ||
481 | if (!page) | ||
482 | return -ENOMEM; | ||
483 | length = -EFAULT; | ||
484 | if (copy_from_user(page, buf, count)) | ||
485 | goto out; | ||
486 | |||
487 | length = -EINVAL; | ||
488 | if (sscanf(page, "%d", &new_value) != 1) | ||
489 | goto out; | ||
490 | |||
491 | if (new_value) { | ||
492 | printk(KERN_NOTICE | ||
493 | "SELinux: compat_net is deprecated, please use secmark" | ||
494 | " instead\n"); | ||
495 | selinux_compat_net = 1; | ||
496 | } else | ||
497 | selinux_compat_net = 0; | ||
498 | length = count; | ||
499 | out: | ||
500 | free_page((unsigned long) page); | ||
501 | return length; | ||
502 | } | ||
503 | static const struct file_operations sel_compat_net_ops = { | ||
504 | .read = sel_read_compat_net, | ||
505 | .write = sel_write_compat_net, | ||
506 | }; | ||
507 | |||
508 | /* | 441 | /* |
509 | * Remaining nodes use transaction based IO methods like nfsd/nfsctl.c | 442 | * Remaining nodes use transaction based IO methods like nfsd/nfsctl.c |
510 | */ | 443 | */ |
@@ -1665,7 +1598,6 @@ static int sel_fill_super(struct super_block *sb, void *data, int silent) | |||
1665 | [SEL_DISABLE] = {"disable", &sel_disable_ops, S_IWUSR}, | 1598 | [SEL_DISABLE] = {"disable", &sel_disable_ops, S_IWUSR}, |
1666 | [SEL_MEMBER] = {"member", &transaction_ops, S_IRUGO|S_IWUGO}, | 1599 | [SEL_MEMBER] = {"member", &transaction_ops, S_IRUGO|S_IWUGO}, |
1667 | [SEL_CHECKREQPROT] = {"checkreqprot", &sel_checkreqprot_ops, S_IRUGO|S_IWUSR}, | 1600 | [SEL_CHECKREQPROT] = {"checkreqprot", &sel_checkreqprot_ops, S_IRUGO|S_IWUSR}, |
1668 | [SEL_COMPAT_NET] = {"compat_net", &sel_compat_net_ops, S_IRUGO|S_IWUSR}, | ||
1669 | [SEL_REJECT_UNKNOWN] = {"reject_unknown", &sel_handle_unknown_ops, S_IRUGO}, | 1601 | [SEL_REJECT_UNKNOWN] = {"reject_unknown", &sel_handle_unknown_ops, S_IRUGO}, |
1670 | [SEL_DENY_UNKNOWN] = {"deny_unknown", &sel_handle_unknown_ops, S_IRUGO}, | 1602 | [SEL_DENY_UNKNOWN] = {"deny_unknown", &sel_handle_unknown_ops, S_IRUGO}, |
1671 | /* last one */ {""} | 1603 | /* last one */ {""} |