]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mm/vmalloc: print a warning message first on failure
authorUladzislau Rezki (Sony) <urezki@gmail.com>
Wed, 2 Jun 2021 03:52:32 +0000 (13:52 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Wed, 2 Jun 2021 03:52:32 +0000 (13:52 +1000)
When a memory allocation for array of pages are not succeed emit a warning
message as a first step and then perform the further cleanup.

The reason it should be done in a right order is the clean up function
which is free_vm_area() can potentially also follow its error paths what
can lead to confusion what was broken first.

Link: https://lkml.kernel.org/r/20210516202056.2120-4-urezki@gmail.com
Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
Cc: Hillf Danton <hdanton@sina.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Oleksiy Avramchenko <oleksiy.avramchenko@sonymobile.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
mm/vmalloc.c

index f0df4b60f18ecd7bd11aa0c1396f17dae010ccc8..c01066a90097ba9e63bf8b5fe4ab0a300f761e82 100644 (file)
@@ -2780,11 +2780,11 @@ static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask,
        }
 
        if (!area->pages) {
-               free_vm_area(area);
                warn_alloc(gfp_mask, NULL,
                           "vmalloc size %lu allocation failure: "
                           "page array size %lu allocation failed",
                           nr_small_pages * PAGE_SIZE, array_size);
+               free_vm_area(area);
                return NULL;
        }