lkdtm: use SLAB_NO_MERGE instead of an empty constructor
authorHarry Yoo <harry.yoo@oracle.com>
Tue, 18 Mar 2025 01:45:33 +0000 (10:45 +0900)
committerKees Cook <kees@kernel.org>
Mon, 28 Apr 2025 17:32:43 +0000 (10:32 -0700)
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: Harry Yoo <harry.yoo@oracle.com>
Link: https://lore.kernel.org/r/20250318014533.1624852-1-harry.yoo@oracle.com
Signed-off-by: Kees Cook <kees@kernel.org>
drivers/misc/lkdtm/heap.c

index b1b316f99703458976578b94498ddbb80aca28c2..c1a05b935894294afef8224da6eea772e7618679 100644 (file)
@@ -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)