diff options
author | Uladzislau Rezki (Sony) <urezki@gmail.com> | 2020-12-14 19:08:46 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2020-12-15 12:13:41 -0800 |
commit | 8945a723064a2ccfc8dffa5dd17d5a3b351fbf1a (patch) | |
tree | e055171925a828235781226623a34027b5ae3cfe /mm/vmalloc.c | |
parent | 34fe653716b0d340bc26dd4823d2dbe00c57f849 (diff) | |
download | lwn-8945a723064a2ccfc8dffa5dd17d5a3b351fbf1a.tar.gz lwn-8945a723064a2ccfc8dffa5dd17d5a3b351fbf1a.zip |
mm/vmalloc: use free_vm_area() if an allocation fails
There is a dedicated and separate function that finds and removes a
continuous kernel virtual area. As a final step it also releases the
"area", a descriptor of corresponding vm_struct.
Use free_vmap_area() in the __vmalloc_node_range() instead of open coded
steps which are exactly the same, to perform a cleanup.
Link: https://lkml.kernel.org/r/20201116220033.1837-1-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: Michal Hocko <mhocko@suse.com>
Cc: Oleksiy Avramchenko <oleksiy.avramchenko@sonymobile.com>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: "Huang, Ying" <ying.huang@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/vmalloc.c')
-rw-r--r-- | mm/vmalloc.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 8a2dc571bc8d..da833c66d625 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -2479,8 +2479,7 @@ static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask, } if (!pages) { - remove_vm_area(area->addr); - kfree(area); + free_vm_area(area); return NULL; } |