Displaying 2 results from an estimated 2 matches for "ba2ca53".
2013 Jan 16
6
[PATCH V2] mm/slab: add a leak decoder callback
...mem_cache_destroy);
+void kmem_cache_destroy_decoder(struct kmem_cache *s, void (*decoder)(void *))
+{
+ return __kmem_cache_destroy(s, decoder);
+}
+EXPORT_SYMBOL(kmem_cache_destroy_decoder);
+
int slab_is_available(void)
{
return slab_state >= UP;
diff --git a/mm/slub.c b/mm/slub.c
index ba2ca53..34b3b75 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -3098,6 +3098,8 @@ static void list_slab_objects(struct kmem_cache *s, struct page *page,
for_each_object(p, s, addr, page->objects) {
if (!test_bit(slab_index(p, s, addr), map)) {
+ if (unlikely(s->decoder))
+ s->decoder(p);...
2013 Jan 14
5
[PATCH] mm/slab: add a leak decoder callback
...name, size_t size,
s->object_size = s->size = size;
s->align = calculate_alignment(flags, align, size);
s->ctor = ctor;
+ s->decoder = NULL;
if (memcg_register_cache(memcg, s, parent_cache)) {
kmem_cache_free(kmem_cache, s);
diff --git a/mm/slub.c b/mm/slub.c
index ba2ca53..0496a2b 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -3098,6 +3098,8 @@ static void list_slab_objects(struct kmem_cache *s, struct page *page,
for_each_object(p, s, addr, page->objects) {
if (!test_bit(slab_index(p, s, addr), map)) {
+ if (unlikely(s->decoder))
+ s->decoder(p);...