Message ID | 20211119142219.1519617-2-elver@google.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [1/2] kasan: add ability to detect double-kmem_cache_destroy() | expand |
On Fri, Nov 19, 2021 at 3:22 PM Marco Elver <elver@google.com> wrote: > > Add a test case for double-kmem_cache_destroy() detection. > > Signed-off-by: Marco Elver <elver@google.com> > --- > lib/test_kasan.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/lib/test_kasan.c b/lib/test_kasan.c > index 40f7274297c1..4da4b214ed06 100644 > --- a/lib/test_kasan.c > +++ b/lib/test_kasan.c > @@ -866,6 +866,16 @@ static void kmem_cache_invalid_free(struct kunit *test) > kmem_cache_destroy(cache); > } > > +static void kmem_cache_double_destroy(struct kunit *test) > +{ > + struct kmem_cache *cache; > + > + cache = kmem_cache_create("test_cache", 200, 0, 0, NULL); > + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache); > + kmem_cache_destroy(cache); > + KUNIT_EXPECT_KASAN_FAIL(test, kmem_cache_destroy(cache)); > +} > + > static void kasan_memchr(struct kunit *test) > { > char *ptr; > @@ -1183,6 +1193,7 @@ static struct kunit_case kasan_kunit_test_cases[] = { > KUNIT_CASE(ksize_uaf), > KUNIT_CASE(kmem_cache_double_free), > KUNIT_CASE(kmem_cache_invalid_free), > + KUNIT_CASE(kmem_cache_double_destroy), > KUNIT_CASE(kasan_memchr), > KUNIT_CASE(kasan_memcmp), > KUNIT_CASE(kasan_strings), > -- > 2.34.0.rc2.393.gf8c9666880-goog > Reviewed-by: Andrey Konovalov <andreyknvl@gmail.com> Thanks!
diff --git a/lib/test_kasan.c b/lib/test_kasan.c index 40f7274297c1..4da4b214ed06 100644 --- a/lib/test_kasan.c +++ b/lib/test_kasan.c @@ -866,6 +866,16 @@ static void kmem_cache_invalid_free(struct kunit *test) kmem_cache_destroy(cache); } +static void kmem_cache_double_destroy(struct kunit *test) +{ + struct kmem_cache *cache; + + cache = kmem_cache_create("test_cache", 200, 0, 0, NULL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache); + kmem_cache_destroy(cache); + KUNIT_EXPECT_KASAN_FAIL(test, kmem_cache_destroy(cache)); +} + static void kasan_memchr(struct kunit *test) { char *ptr; @@ -1183,6 +1193,7 @@ static struct kunit_case kasan_kunit_test_cases[] = { KUNIT_CASE(ksize_uaf), KUNIT_CASE(kmem_cache_double_free), KUNIT_CASE(kmem_cache_invalid_free), + KUNIT_CASE(kmem_cache_double_destroy), KUNIT_CASE(kasan_memchr), KUNIT_CASE(kasan_memcmp), KUNIT_CASE(kasan_strings),
Add a test case for double-kmem_cache_destroy() detection. Signed-off-by: Marco Elver <elver@google.com> --- lib/test_kasan.c | 11 +++++++++++ 1 file changed, 11 insertions(+)