diff --git a/fs/coredump.c b/fs/coredump.c
index 4b3c75732c97da59262b8baf580cb95717c4dc67..3224dee44d30ed3206ec3881545a540d6c59db56 100644
--- a/fs/coredump.c
+++ b/fs/coredump.c
@@ -1134,8 +1134,10 @@ int dump_vma_snapshot(struct coredump_params *cprm, int *vma_count,
 
 	mmap_write_unlock(mm);
 
-	if (WARN_ON(i != *vma_count))
+	if (WARN_ON(i != *vma_count)) {
+		kvfree(*vma_meta);
 		return -EFAULT;
+	}
 
 	*vma_data_size_ptr = vma_data_size;
 	return 0;