return NULL;
  }
  
 -/*
 - * Figure out what the alignment of the objects will be given a set of
 - * flags, a user specified alignment and the size of the objects.
 - */
 -unsigned long calculate_alignment(slab_flags_t flags,
 -              unsigned long align, unsigned long size)
 -{
 -      /*
 -       * If the user wants hardware cache aligned objects then follow that
 -       * suggestion if the object is sufficiently large.
 -       *
 -       * The hardware cache alignment cannot override the specified
 -       * alignment though. If that is greater then use it.
 -       */
 -      if (flags & SLAB_HWCACHE_ALIGN) {
 -              unsigned long ralign = cache_line_size();
 -              while (size <= ralign / 2)
 -                      ralign /= 2;
 -              align = max(align, ralign);
 -      }
 -
 -      if (align < ARCH_SLAB_MINALIGN)
 -              align = ARCH_SLAB_MINALIGN;
 -
 -      return ALIGN(align, sizeof(void *));
 -}
 -
  static struct kmem_cache *create_cache(const char *name,
                size_t object_size, size_t size, size_t align,
-               slab_flags_t flags, void (*ctor)(void *),
+               slab_flags_t flags, size_t useroffset,
+               size_t usersize, void (*ctor)(void *),
                struct mem_cgroup *memcg, struct kmem_cache *root_cache)
  {
        struct kmem_cache *s;