Commit 28cd28a7 authored by Harry Yoo's avatar Harry Yoo Committed by Kees Cook
Browse files

lkdtm: use SLAB_NO_MERGE instead of an empty constructor



Use SLAB_NO_MERGE flag to prevent merging instead of providing an
empty constructor. Using an empty constructor in this manner is an abuse
of slab interface.

The SLAB_NO_MERGE flag should be used with caution, but in this case,
it is acceptable as the cache is intended soley for debugging purposes.

No functional changes intended.

Signed-off-by: default avatarHarry Yoo <harry.yoo@oracle.com>
Link: https://lore.kernel.org/r/20250318014533.1624852-1-harry.yoo@oracle.com


Signed-off-by: default avatarKees Cook <kees@kernel.org>
parent b4432656
Loading
Loading
Loading
Loading
+3 −14
Original line number Diff line number Diff line
@@ -355,23 +355,12 @@ static void lkdtm_SLAB_FREE_PAGE(void)
	free_page(p);
}

/*
 * We have constructors to keep the caches distinctly separated without
 * needing to boot with "slab_nomerge".
 */
static void ctor_double_free(void *region)
{ }
static void ctor_a(void *region)
{ }
static void ctor_b(void *region)
{ }

void __init lkdtm_heap_init(void)
{
	double_free_cache = kmem_cache_create("lkdtm-heap-double_free",
					      64, 0, 0, ctor_double_free);
	a_cache = kmem_cache_create("lkdtm-heap-a", 64, 0, 0, ctor_a);
	b_cache = kmem_cache_create("lkdtm-heap-b", 64, 0, 0, ctor_b);
					      64, 0, SLAB_NO_MERGE, NULL);
	a_cache = kmem_cache_create("lkdtm-heap-a", 64, 0, SLAB_NO_MERGE, NULL);
	b_cache = kmem_cache_create("lkdtm-heap-b", 64, 0, SLAB_NO_MERGE, NULL);
}

void __exit lkdtm_heap_exit(void)