static inline struct kmem_cache *
binject_create_slab(const char *name, size_t obj_size, unsigned long flags,
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 26)
void (*init_once)(void *))
{
-#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 26)
return kmem_cache_create(name, obj_size, 0, flags, NULL);
#else
+#define KCOMPAT_OLD_SLAB
+ void (*init_once)(void *, kmem_cache_t *, unsigned long))
+{
return kmem_cache_create(name, obj_size, 0, flags, init_once, NULL);
#endif
}
misc_deregister(&b_misc_dev);
}
-static void b_cmd_init_once(void *data)
+static void __b_cmd_init_once(struct b_cmd *bc)
{
- struct b_cmd *bc = data;
-
INIT_LIST_HEAD(&bc->list);
}
+#ifdef KCOMPAT_OLD_SLAB
+static void b_cmd_init_once(void *data, kmem_cache_t *slab, unsigned long flags)
+{
+ if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) ==
+ SLAB_CTOR_CONSTRUCTOR)
+ __b_cmd_init_once(data);
+}
+#else
+static void b_cmd_init_once(void *data)
+{
+ __b_cmd_init_once(data);
+}
+#endif
+
static int __init b_init(void)
{
int ret;