[Concept,v2,10/30] Revert "lib: Add CONFIG_LIB_KMEM_CACHE for full kmem_cache support"

Message ID 20260102005112.552256-11-sjg@u-boot.org
State New
Headers
Series ext4l: Add write support (part L) |

Commit Message

Simon Glass Jan. 2, 2026, 12:50 a.m. UTC
  From: Simon Glass <simon.glass@canonical.com>

The memory leaks were in fact not coming from the kmem cache, so let's
drop this unnecessary feature.

This reverts commit e63fc511c3dadbc99b53611cea304bc2bb565888.

Signed-off-by: Simon Glass <simon.glass@canonical.com>
---

(no changes since v1)

 include/linux/slab.h | 27 +++++++++++----------------
 lib/Kconfig          |  8 --------
 lib/Makefile         |  1 -
 lib/kmem_cache.c     | 20 --------------------
 4 files changed, 11 insertions(+), 45 deletions(-)
 delete mode 100644 lib/kmem_cache.c
  

Patch

diff --git a/include/linux/slab.h b/include/linux/slab.h
index caaaa3d9e16..2b374641534 100644
--- a/include/linux/slab.h
+++ b/include/linux/slab.h
@@ -84,19 +84,24 @@  static inline void *krealloc(const void *p, size_t new_size, gfp_t flags)
 
 void *kmemdup(const void *src, size_t len, gfp_t gfp);
 
-/* kmem_cache implementation / stubs */
+/* kmem_cache stubs */
 struct kmem_cache {
 	int sz;
 };
 
 struct kmem_cache *get_mem(int element_sz);
-#define kmem_cache_create(a, sz, c, d, e)	get_mem(sz)
+#define kmem_cache_create(a, sz, c, d, e)	({ (void)(a); (void)(e); get_mem(sz); })
 void *kmem_cache_alloc(struct kmem_cache *obj, gfp_t flag);
 
-#if CONFIG_IS_ENABLED(LIB_KMEM_CACHE)
-void kmem_cache_free(struct kmem_cache *cachep, void *obj);
-void kmem_cache_destroy(struct kmem_cache *cachep);
-#else
+static inline void *kmem_cache_zalloc(struct kmem_cache *obj, gfp_t flags)
+{
+	void *ret = kmem_cache_alloc(obj, flags);
+
+	if (ret)
+		memset(ret, 0, obj->sz);
+	return ret;
+}
+
 static inline void kmem_cache_free(struct kmem_cache *cachep, void *obj)
 {
 	free(obj);
@@ -106,15 +111,5 @@  static inline void kmem_cache_destroy(struct kmem_cache *cachep)
 {
 	free(cachep);
 }
-#endif
-
-static inline void *kmem_cache_zalloc(struct kmem_cache *obj, gfp_t flags)
-{
-	void *ret = kmem_cache_alloc(obj, flags);
-
-	if (ret)
-		memset(ret, 0, obj->sz);
-	return ret;
-}
 
 #endif /* _LINUX_SLAB_H */
diff --git a/lib/Kconfig b/lib/Kconfig
index 5ddf8125766..9c7eb27c392 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -396,14 +396,6 @@  config TPL_TINY_MEMSET
 config RBTREE
 	bool
 
-config LIB_KMEM_CACHE
-	bool "Enable full kmem_cache implementation"
-	help
-	  Provide a proper kmem_cache implementation in lib/linux_compat.c
-	  that tracks allocated objects. This is needed by subsystems like
-	  ext4 that require cache management. When disabled, simple inline
-	  stubs are used instead.
-
 config BITREVERSE
 	bool "Bit reverse library from Linux"
 
diff --git a/lib/Makefile b/lib/Makefile
index 3890a827d1c..e770c273a8c 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -136,7 +136,6 @@  obj-$(CONFIG_$(PHASE_)OF_LIBFDT) += fdtdec.o fdtdec_common.o fdt_print.o
 obj-y += hang.o
 obj-y += linux_compat.o
 obj-y += linux_string.o
-obj-$(CONFIG_$(PHASE_)LIB_KMEM_CACHE) += kmem_cache.o
 obj-$(CONFIG_$(PHASE_)LMB) += lmb.o
 obj-y += membuf.o
 obj-$(CONFIG_REGEX) += slre.o
diff --git a/lib/kmem_cache.c b/lib/kmem_cache.c
deleted file mode 100644
index bff9329aa53..00000000000
--- a/lib/kmem_cache.c
+++ /dev/null
@@ -1,20 +0,0 @@ 
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * kmem_cache implementation for U-Boot
- *
- * Copyright 2025 Canonical Ltd
- * Written by Simon Glass <simon.glass@canonical.com>
- */
-
-#include <malloc.h>
-#include <linux/slab.h>
-
-void kmem_cache_free(struct kmem_cache *cachep, void *obj)
-{
-	free(obj);
-}
-
-void kmem_cache_destroy(struct kmem_cache *cachep)
-{
-	free(cachep);
-}