Re: [PATCH v2 2/2] mm/vmalloc: Print a warning message first on failure

Matthew Wilcox
2021-05-09T19:47:40Z

On Sun, May 09, 2021 at 09:38:44PM +0200, Uladzislau Rezki (Sony) wrote:
> export KBUILD_USERCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \
> - -O2 -fomit-frame-pointer -std=gnu89
> + -O0 -g -fomit-frame-pointer -std=gnu89

You clearly didn't intend to submit this portion ...

> +++ b/mm/vmalloc.c
> @@ -2781,11 +2781,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;
> }

I think this is a bad idea. We're clearly low on memory (a memory
allocation just failed). We should free the memory we have allocated
to improve the chances of the warning message making it out.