*/
 static bool pfmemalloc_active __read_mostly;
 
-/*
- * kmem_bufctl_t:
- *
- * Bufctl's are used for linking objs within a slab
- * linked offsets.
- *
- * This implementation relies on "struct page" for locating the cache &
- * slab an object belongs to.
- * This allows the bufctl structure to be small (one int), but limits
- * the number of objects a slab (not a cache) can contain when off-slab
- * bufctls are used. The limit is the size of the largest general cache
- * that does not use off-slab slabs.
- * For 32bit archs with 4 kB pages, is this 56.
- * This is not serious, as it is only for large objects, when it is unwise
- * to have too many per slab.
- * Note: This limit can be raised by introducing a general cache whose size
- * is less than 512 (PAGE_SIZE<<3), but greater than 256.
- */
-
-typedef unsigned int kmem_bufctl_t;
-#define        SLAB_LIMIT      (((kmem_bufctl_t)(~0U))-3)
+#define        SLAB_LIMIT      (((unsigned int)(~0U))-1)
 
 /*
  * struct slab
                struct list_head list;
                void *s_mem;            /* including colour offset */
                unsigned int inuse;     /* num of objs active in slab */
-               kmem_bufctl_t free;
+               unsigned int free;
        };
 };
 
 
 static size_t slab_mgmt_size(size_t nr_objs, size_t align)
 {
-       return ALIGN(sizeof(struct slab)+nr_objs*sizeof(kmem_bufctl_t), align);
+       return ALIGN(sizeof(struct slab)+nr_objs*sizeof(unsigned int), align);
 }
 
 /*
         * slab is used for:
         *
         * - The struct slab
-        * - One kmem_bufctl_t for each object
+        * - One unsigned int for each object
         * - Padding to respect alignment of @align
         * - @buffer_size bytes for each object
         *
                 * into account.
                 */
                nr_objs = (slab_size - sizeof(struct slab)) /
-                         (buffer_size + sizeof(kmem_bufctl_t));
+                         (buffer_size + sizeof(unsigned int));
 
                /*
                 * This calculated number will be either the right
                         * looping condition in cache_grow().
                         */
                        offslab_limit = size - sizeof(struct slab);
-                       offslab_limit /= sizeof(kmem_bufctl_t);
+                       offslab_limit /= sizeof(unsigned int);
 
                        if (num > offslab_limit)
                                break;
        if (!cachep->num)
                return -E2BIG;
 
-       slab_size = ALIGN(cachep->num * sizeof(kmem_bufctl_t)
+       slab_size = ALIGN(cachep->num * sizeof(unsigned int)
                          + sizeof(struct slab), cachep->align);
 
        /*
        if (flags & CFLGS_OFF_SLAB) {
                /* really off slab. No need for manual alignment */
                slab_size =
-                   cachep->num * sizeof(kmem_bufctl_t) + sizeof(struct slab);
+                   cachep->num * sizeof(unsigned int) + sizeof(struct slab);
 
 #ifdef CONFIG_PAGE_POISONING
                /* If we're going to use the generic kernel_map_pages()
        return slabp;
 }
 
-static inline kmem_bufctl_t *slab_bufctl(struct slab *slabp)
+static inline unsigned int *slab_bufctl(struct slab *slabp)
 {
-       return (kmem_bufctl_t *) (slabp + 1);
+       return (unsigned int *) (slabp + 1);
 }
 
 static void cache_init_objs(struct kmem_cache *cachep,
 {
        unsigned int objnr = obj_to_index(cachep, slabp, objp);
 #if DEBUG
-       kmem_bufctl_t i;
+       unsigned int i;
 
        /* Verify that the slab belongs to the intended node */
        WARN_ON(page_to_nid(virt_to_page(objp)) != nodeid);