return x + sprintf(buf + x, "\n");
 }
 
-#ifdef CONFIG_SLUB_DEBUG
-static int any_slab_objects(struct kmem_cache *s)
-{
-       int node;
-       struct kmem_cache_node *n;
-
-       for_each_kmem_cache_node(s, node, n)
-               if (atomic_long_read(&n->total_objects))
-                       return 1;
-
-       return 0;
-}
-#endif
-
 #define to_slab_attr(n) container_of(n, struct slab_attribute, attr)
 #define to_slab(n) container_of(n, struct kmem_cache, kobj)
 
 {
        return sprintf(buf, "%d\n", !!(s->flags & SLAB_CONSISTENCY_CHECKS));
 }
-
-static ssize_t sanity_checks_store(struct kmem_cache *s,
-                               const char *buf, size_t length)
-{
-       s->flags &= ~SLAB_CONSISTENCY_CHECKS;
-       if (buf[0] == '1') {
-               s->flags &= ~__CMPXCHG_DOUBLE;
-               s->flags |= SLAB_CONSISTENCY_CHECKS;
-       }
-       return length;
-}
-SLAB_ATTR(sanity_checks);
+SLAB_ATTR_RO(sanity_checks);
 
 static ssize_t trace_show(struct kmem_cache *s, char *buf)
 {
        return sprintf(buf, "%d\n", !!(s->flags & SLAB_TRACE));
 }
-
-static ssize_t trace_store(struct kmem_cache *s, const char *buf,
-                                                       size_t length)
-{
-       /*
-        * Tracing a merged cache is going to give confusing results
-        * as well as cause other issues like converting a mergeable
-        * cache into an umergeable one.
-        */
-       if (s->refcount > 1)
-               return -EINVAL;
-
-       s->flags &= ~SLAB_TRACE;
-       if (buf[0] == '1') {
-               s->flags &= ~__CMPXCHG_DOUBLE;
-               s->flags |= SLAB_TRACE;
-       }
-       return length;
-}
-SLAB_ATTR(trace);
+SLAB_ATTR_RO(trace);
 
 static ssize_t red_zone_show(struct kmem_cache *s, char *buf)
 {
 {
        return sprintf(buf, "%d\n", !!(s->flags & SLAB_FAILSLAB));
 }
-
-static ssize_t failslab_store(struct kmem_cache *s, const char *buf,
-                                                       size_t length)
-{
-       if (s->refcount > 1)
-               return -EINVAL;
-
-       s->flags &= ~SLAB_FAILSLAB;
-       if (buf[0] == '1')
-               s->flags |= SLAB_FAILSLAB;
-       return length;
-}
-SLAB_ATTR(failslab);
+SLAB_ATTR_RO(failslab);
 #endif
 
 static ssize_t shrink_show(struct kmem_cache *s, char *buf)