Signed-off-by: Suren Baghdasaryan <surenb@google.com>
#ifdef CONFIG_PER_VMA_LOCK
+static struct kmem_cache *vma_lock_cachep;
+
void vma_lock_init(struct vm_area_struct *vma)
{
- vma->lock = kmalloc(sizeof(struct rw_semaphore), GFP_KERNEL);
+ if (!vma_lock_cachep)
+ vma_lock_cachep = KMEM_CACHE(rw_semaphore,
+ SLAB_PANIC|SLAB_ACCOUNT|SLAB_HWCACHE_ALIGN);
+ vma->lock = kmem_cache_alloc(vma_lock_cachep, GFP_KERNEL);
init_rwsem(vma->lock);
vma->vm_lock_seq = -1;
}
void vma_lock_free(struct vm_area_struct *vma)
{
- kfree(vma->lock);
+ kmem_cache_free(vma_lock_cachep, vma->lock);
}
/*