From: David Hildenbrand Date: Wed, 22 Jul 2020 09:45:53 +0000 (+0200) Subject: s390/vmemmap: cleanup when vmemmap_populate() fails X-Git-Tag: v5.9-rc1~211^2~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c00f05a92424c7788fdbf0909b823f8027596d66;p=thirdparty%2Fkernel%2Flinux.git s390/vmemmap: cleanup when vmemmap_populate() fails Cleanup what we partially added in case vmemmap_populate() fails. For vmem, this is already handled by vmem_add_mapping(). Cc: Vasily Gorbik Cc: Christian Borntraeger Cc: Gerald Schaefer Signed-off-by: David Hildenbrand Message-Id: <20200722094558.9828-5-david@redhat.com> Signed-off-by: Heiko Carstens --- diff --git a/arch/s390/mm/vmem.c b/arch/s390/mm/vmem.c index 43fe1e2eb90ea..be32a38bb91fd 100644 --- a/arch/s390/mm/vmem.c +++ b/arch/s390/mm/vmem.c @@ -332,8 +332,13 @@ static void vmem_remove_range(unsigned long start, unsigned long size) int __meminit vmemmap_populate(unsigned long start, unsigned long end, int node, struct vmem_altmap *altmap) { + int ret; + /* We don't care about the node, just use NUMA_NO_NODE on allocations */ - return add_pagetable(start, end, false); + ret = add_pagetable(start, end, false); + if (ret) + remove_pagetable(start, end, false); + return ret; } void vmemmap_free(unsigned long start, unsigned long end,