use kmem_cache_alloc