diff --git a/block/genhd.c b/block/genhd.c
index e609996f2e766d7009d5984aa8b4fbc29c813bbf..f2ac914160d1a96e7258bd86949caef3dcdec6a3 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -715,6 +715,7 @@ struct gendisk *alloc_disk_node(int minors, int node_id)
 			disk->part = kmalloc_node(size,
 				GFP_KERNEL | __GFP_ZERO, node_id);
 			if (!disk->part) {
+				free_disk_stats(disk);
 				kfree(disk);
 				return NULL;
 			}