[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <tencent_7CB95F1C3914BCE1CA4A61FF7C20E7CCB108@qq.com>
Date: Wed, 23 Mar 2022 11:48:24 +0800
From: xkernel.wang@...mail.com
To: glider@...gle.com, akpm@...ux-foundation.org
Cc: andreyknvl@...il.com, elver@...gle.com, dvyukov@...gle.com,
ryabinin.a.a@...il.com, kasan-dev@...glegroups.com,
linux-mm@...ck.org, linux-kernel@...r.kernel.org,
Xiaoke Wang <xkernel.wang@...mail.com>
Subject: [PATCH] lib/test_meminit: optimize do_kmem_cache_rcu_persistent() test
From: Xiaoke Wang <xkernel.wang@...mail.com>
To make the test more robust, there are the following changes:
1. add a check for the return value of kmem_cache_alloc().
2. properly release the object `buf` on several error paths.
3. release the objects of `used_objects` if we never hit `saved_ptr`.
4. destroy the created cache by default.
Signed-off-by: Xiaoke Wang <xkernel.wang@...mail.com>
---
lib/test_meminit.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/lib/test_meminit.c b/lib/test_meminit.c
index 2f4c4bc..8d77c3f 100644
--- a/lib/test_meminit.c
+++ b/lib/test_meminit.c
@@ -300,13 +300,18 @@ static int __init do_kmem_cache_rcu_persistent(int size, int *total_failures)
c = kmem_cache_create("test_cache", size, size, SLAB_TYPESAFE_BY_RCU,
NULL);
buf = kmem_cache_alloc(c, GFP_KERNEL);
+ if (!buf)
+ goto out;
saved_ptr = buf;
fill_with_garbage(buf, size);
buf_contents = kmalloc(size, GFP_KERNEL);
- if (!buf_contents)
+ if (!buf_contents) {
+ kmem_cache_free(c, buf);
goto out;
+ }
used_objects = kmalloc_array(maxiter, sizeof(void *), GFP_KERNEL);
if (!used_objects) {
+ kmem_cache_free(c, buf);
kfree(buf_contents);
goto out;
}
@@ -327,11 +332,14 @@ static int __init do_kmem_cache_rcu_persistent(int size, int *total_failures)
}
}
+ for (iter = 0; iter < maxiter; iter++)
+ kmem_cache_free(c, used_objects[iter]);
+
free_out:
- kmem_cache_destroy(c);
kfree(buf_contents);
kfree(used_objects);
out:
+ kmem_cache_destroy(c);
*total_failures += fail;
return 1;
}
--
Powered by blists - more mailing lists