summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: f371763)
raw | patch | inline | side by side (parent: f371763)
author | Sergey Senozhatsky <sergey.senozhatsky@gmail.com> | |
Wed, 10 Jun 2015 18:14:57 +0000 (11:14 -0700) | ||
committer | Linus Torvalds <torvalds@linux-foundation.org> | |
Wed, 10 Jun 2015 23:43:43 +0000 (16:43 -0700) |
If zs_create_pool()->create_handle_cache()->kmem_cache_create() or
pool->name allocation fails, zs_create_pool()->destroy_handle_cache()
will dereference the NULL pool->handle_cachep.
Modify destroy_handle_cache() to avoid this.
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Cc: Minchan Kim <minchan@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
pool->name allocation fails, zs_create_pool()->destroy_handle_cache()
will dereference the NULL pool->handle_cachep.
Modify destroy_handle_cache() to avoid this.
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Cc: Minchan Kim <minchan@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/zsmalloc.c | patch | blob | history |
diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c
index 08bd7a3d464a9c6959a39e269d2284600e750a50..a8b5e749e84e7dbd50d325eecf84a47316145598 100644 (file)
--- a/mm/zsmalloc.c
+++ b/mm/zsmalloc.c
static void destroy_handle_cache(struct zs_pool *pool)
{
- kmem_cache_destroy(pool->handle_cachep);
+ if (pool->handle_cachep)
+ kmem_cache_destroy(pool->handle_cachep);
}
static unsigned long alloc_handle(struct zs_pool *pool)