zsmalloc: zs_destroy_pool: add size_class NULL check
authorAlexey Romanov <avromanov@sberdevices.ru>
Thu, 13 Oct 2022 11:28:25 +0000 (14:28 +0300)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 21 Oct 2022 04:27:21 +0000 (21:27 -0700)
Inside the zs_destroy_pool() function, there can still be NULL size_class
pointers: if when the next size_class is allocated, inside
zs_create_pool() function, kzalloc will return NULL and handling the error
condition, zs_create_pool() will call zs_destroy_pool().

Link: https://lkml.kernel.org/r/20221013112825.61869-1-avromanov@sberdevices.ru
Fixes: f24263a5a076 ("zsmalloc: remove unnecessary size_class NULL check")
Signed-off-by: Alexey Romanov <avromanov@sberdevices.ru>
Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Nitin Gupta <ngupta@vflare.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/zsmalloc.c

index 5257587..d03941c 100644 (file)
@@ -2311,6 +2311,9 @@ void zs_destroy_pool(struct zs_pool *pool)
                int fg;
                struct size_class *class = pool->size_class[i];
 
+               if (!class)
+                       continue;
+
                if (class->index != i)
                        continue;