static struct kmem_cache *field_cachep;
 static struct kmem_cache *file_cachep;
 
-#define SYSTEM_FL_FREE_NAME            (1 << 31)
-
 static inline int system_refcount(struct event_subsystem *system)
 {
-       return system->ref_count & ~SYSTEM_FL_FREE_NAME;
+       return system->ref_count;
 }
 
 static int system_refcount_inc(struct event_subsystem *system)
 {
-       return (system->ref_count++) & ~SYSTEM_FL_FREE_NAME;
+       return system->ref_count++;
 }
 
 static int system_refcount_dec(struct event_subsystem *system)
 {
-       return (--system->ref_count) & ~SYSTEM_FL_FREE_NAME;
+       return --system->ref_count;
 }
 
 /* Double loops, do not use break, only goto's work */
                kfree(filter->filter_string);
                kfree(filter);
        }
-       if (system->ref_count & SYSTEM_FL_FREE_NAME)
-               kfree(system->name);
+       kfree_const(system->name);
        kfree(system);
 }
 
        system->ref_count = 1;
 
        /* Only allocate if dynamic (kprobes and modules) */
-       if (!core_kernel_data((unsigned long)name)) {
-               system->ref_count |= SYSTEM_FL_FREE_NAME;
-               system->name = kstrdup(name, GFP_KERNEL);
-               if (!system->name)
-                       goto out_free;
-       } else
-               system->name = name;
+       system->name = kstrdup_const(name, GFP_KERNEL);
+       if (!system->name)
+               goto out_free;
 
        system->filter = NULL;
 
        return system;
 
  out_free:
-       if (system->ref_count & SYSTEM_FL_FREE_NAME)
-               kfree(system->name);
+       kfree_const(system->name);
        kfree(system);
        return NULL;
 }