static atomic_t selinux_secmark_refcount = ATOMIC_INIT(0);
 
 #ifdef CONFIG_SECURITY_SELINUX_DEVELOP
-static int selinux_enforcing_boot;
+static int selinux_enforcing_boot __initdata;
 
 static int __init enforcing_setup(char *str)
 {
 #define selinux_enforcing_boot 1
 #endif
 
-int selinux_enabled __lsm_ro_after_init = 1;
+int selinux_enabled_boot __initdata = 1;
 #ifdef CONFIG_SECURITY_SELINUX_BOOTPARAM
 static int __init selinux_enabled_setup(char *str)
 {
        unsigned long enabled;
        if (!kstrtoul(str, 0, &enabled))
-               selinux_enabled = enabled ? 1 : 0;
+               selinux_enabled_boot = enabled ? 1 : 0;
        return 1;
 }
 __setup("selinux=", selinux_enabled_setup);
 DEFINE_LSM(selinux) = {
        .name = "selinux",
        .flags = LSM_FLAG_LEGACY_MAJOR | LSM_FLAG_EXCLUSIVE,
-       .enabled = &selinux_enabled,
+       .enabled = &selinux_enabled_boot,
        .blobs = &selinux_blob_sizes,
        .init = selinux_init,
 };
 {
        int err;
 
-       if (!selinux_enabled)
+       if (!selinux_enabled_boot)
                return 0;
 
        pr_debug("SELinux:  Registering netfilter hooks\n");
 
        pr_info("SELinux:  Disabled at runtime.\n");
 
-       selinux_enabled = 0;
-
        security_delete_hooks(selinux_hooks, ARRAY_SIZE(selinux_hooks));
 
        /* Try to destroy the avc node cache */
 
 {
        int iter;
 
-       if (!selinux_enabled)
+       if (!selinux_enabled_boot)
                return 0;
 
        for (iter = 0; iter < SEL_PKEY_HASH_SIZE; iter++) {
 
 
 struct netlbl_lsm_secattr;
 
-extern int selinux_enabled;
+extern int selinux_enabled_boot;
 
 /* Policy capabilities */
 enum {
 struct selinux_ss;
 
 struct selinux_state {
+#ifdef CONFIG_SECURITY_SELINUX_DISABLE
        bool disabled;
+#endif
 #ifdef CONFIG_SECURITY_SELINUX_DEVELOP
        bool enforcing;
 #endif
 
 {
        int i;
 
-       if (!selinux_enabled)
+       if (!selinux_enabled_boot)
                return 0;
 
        for (i = 0; i < SEL_NETIF_HASH_SIZE; i++)
 
 {
        int iter;
 
-       if (!selinux_enabled)
+       if (!selinux_enabled_boot)
                return 0;
 
        for (iter = 0; iter < SEL_NETNODE_HASH_SIZE; iter++) {
 
 {
        int iter;
 
-       if (!selinux_enabled)
+       if (!selinux_enabled_boot)
                return 0;
 
        for (iter = 0; iter < SEL_NETPORT_HASH_SIZE; iter++) {
 
                        goto out;
                audit_log(audit_context(), GFP_KERNEL, AUDIT_MAC_STATUS,
                        "enforcing=%d old_enforcing=%d auid=%u ses=%u"
-                       " enabled=%d old-enabled=%d lsm=selinux res=1",
+                       " enabled=1 old-enabled=1 lsm=selinux res=1",
                        new_value, old_value,
                        from_kuid(&init_user_ns, audit_get_loginuid(current)),
-                       audit_get_sessionid(current),
-                       selinux_enabled, selinux_enabled);
+                       audit_get_sessionid(current));
                enforcing_set(state, new_value);
                if (new_value)
                        avc_ss_reset(state->avc, 0);
                        goto out;
                audit_log(audit_context(), GFP_KERNEL, AUDIT_MAC_STATUS,
                        "enforcing=%d old_enforcing=%d auid=%u ses=%u"
-                       " enabled=%d old-enabled=%d lsm=selinux res=1",
+                       " enabled=0 old-enabled=1 lsm=selinux res=1",
                        enforcing, enforcing,
                        from_kuid(&init_user_ns, audit_get_loginuid(current)),
-                       audit_get_sessionid(current), 0, 1);
+                       audit_get_sessionid(current));
        }
 
        length = count;
                                          sizeof(NULL_FILE_NAME)-1);
        int err;
 
-       if (!selinux_enabled)
+       if (!selinux_enabled_boot)
                return 0;
 
        err = sysfs_create_mount_point(fs_kobj, "selinux");