diff --git a/mm/sparse.c b/mm/sparse.c
index 7bd23f9d6cef64ecf76ca0fc70dca15a76ff8edd..33406ea2ecc4480136e66d5ca7e85a8c1f89ca74 100644
--- a/mm/sparse.c
+++ b/mm/sparse.c
@@ -547,6 +547,7 @@ static void __init sparse_init_nid(int nid, unsigned long pnum_begin,
 			pr_err("%s: node[%d] memory map backing failed. Some memory will not be available.",
 			       __func__, nid);
 			pnum_begin = pnum;
+			sparse_buffer_fini();
 			goto failed;
 		}
 		check_usemap_section_nr(nid, usage);