diff --git a/cli_classic.c b/cli_classic.c
index c490d3f..e0b5094 100644
--- a/cli_classic.c
+++ b/cli_classic.c
@@ -682,8 +682,10 @@
 out_shutdown:
 	programmer_shutdown();
 out:
-	for (i = 0; i < chipcount; i++)
+	for (i = 0; i < chipcount; i++) {
+		flashrom_layout_release(flashes[i].default_layout);
 		free(flashes[i].chip);
+	}
 
 	layout_cleanup(&include_args);
 	free(filename);
diff --git a/flash.h b/flash.h
index a28f0f3..b70118d 100644
--- a/flash.h
+++ b/flash.h
@@ -338,7 +338,7 @@
 	chipaddr virtual_registers;
 	struct registered_master *mst;
 	const struct flashrom_layout *layout;
-	struct single_layout fallback_layout;
+	struct flashrom_layout *default_layout;
 	struct {
 		bool force;
 		bool force_boardmismatch;
diff --git a/flashrom.c b/flashrom.c
index f99cff9..361f135 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -831,15 +831,12 @@
 	if (!flash->chip)
 		return -1;
 
-	/* Fill fallback layout covering the whole chip. */
-	struct single_layout *const fallback = &flash->fallback_layout;
-	fallback->base.entries		= &fallback->entry;
-	fallback->base.capacity		= 1;
-	fallback->base.num_entries	= 0;
-	if (flashrom_layout_add_region(&fallback->base,
+	/* Fill default layout covering the whole chip. */
+	if (flashrom_layout_new(&flash->default_layout, 1) ||
+	    flashrom_layout_add_region(flash->default_layout,
 			0, flash->chip->total_size * 1024 - 1, "complete flash") ||
-	    flashrom_layout_include_region(&fallback->base, "complete flash"))
-		return -1;
+	    flashrom_layout_include_region(flash->default_layout, "complete flash"))
+	        return -1;
 
 	tmp = flashbuses_to_text(flash->chip->bustype);
 	msg_cinfo("%s %s flash chip \"%s\" (%d kB, %s) ", force ? "Assuming" : "Found",
diff --git a/ich_descriptors.c b/ich_descriptors.c
index 585a8b0..61cf6fc 100644
--- a/ich_descriptors.c
+++ b/ich_descriptors.c
@@ -1338,7 +1338,9 @@
  *	   1 if the descriptor couldn't be parsed,
  *	   2 when out of memory.
  */
-int layout_from_ich_descriptors(struct ich_layout *const layout, const void *const dump, const size_t len)
+int layout_from_ich_descriptors(
+		struct flashrom_layout **const layout,
+		const void *const dump, const size_t len)
 {
 	static const char *const regions[] = {
 		"fd", "bios", "me", "gbe", "pd", "reg5", "bios2", "reg7", "ec", "reg9", "ie",
@@ -1350,10 +1352,8 @@
 	if (read_ich_descriptors_from_dump(dump, len, &cs, &desc))
 		return 1;
 
-	memset(layout, 0x00, sizeof(*layout));
-	layout->base.entries = layout->entries;
-	layout->base.capacity = ARRAY_SIZE(layout->entries);
-	layout->base.num_entries = 0;
+	if (flashrom_layout_new(layout, ARRAY_SIZE(regions)))
+		return 2;
 
 	ssize_t i;
 	const ssize_t nr = MIN(ich_number_of_regions(cs, &desc.content), (ssize_t)ARRAY_SIZE(regions));
@@ -1362,8 +1362,11 @@
 		const chipoff_t limit = ICH_FREG_LIMIT(desc.region.FLREGs[i]);
 		if (limit <= base)
 			continue;
-		if (flashrom_layout_add_region(&layout->base, base, limit, regions[i]))
+		if (flashrom_layout_add_region(*layout, base, limit, regions[i])) {
+			flashrom_layout_release(*layout);
+			*layout = NULL;
 			return 2;
+		}
 	}
 	return 0;
 }
diff --git a/ich_descriptors.h b/ich_descriptors.h
index cc40c1f..5a6cdf1 100644
--- a/ich_descriptors.h
+++ b/ich_descriptors.h
@@ -573,11 +573,6 @@
 	struct ich_desc_upper_map upper;
 };
 
-struct ich_layout {
-	struct flashrom_layout base;
-	struct romentry entries[MAX_NUM_FLREGS];
-};
-
 ssize_t ich_number_of_regions(enum ich_chipset cs, const struct ich_desc_content *content);
 ssize_t ich_number_of_masters(enum ich_chipset cs, const struct ich_desc_content *content);
 
@@ -596,6 +591,6 @@
 int read_ich_descriptors_via_fdo(enum ich_chipset cs, void *spibar, struct ich_descriptors *desc);
 int getFCBA_component_density(enum ich_chipset cs, const struct ich_descriptors *desc, uint8_t idx);
 
-int layout_from_ich_descriptors(struct ich_layout *, const void *dump, size_t len);
+int layout_from_ich_descriptors(struct flashrom_layout **, const void *dump, size_t len);
 
 #endif /* __ICH_DESCRIPTORS_H__ */
diff --git a/layout.c b/layout.c
index e2acd77..f7f68b3 100644
--- a/layout.c
+++ b/layout.c
@@ -37,7 +37,7 @@
 	if (flashctx->layout && flashctx->layout->num_entries)
 		return flashctx->layout;
 	else
-		return &flashctx->fallback_layout.base;
+		return flashctx->default_layout;
 }
 
 static struct romentry *mutable_layout_next(
@@ -275,6 +275,32 @@
  */
 
 /**
+ * @brief Create a new, empty layout.
+ *
+ * @param layout Pointer to returned layout reference.
+ * @param count  Number of layout entries to allocate.
+ *
+ * @return 0 on success,
+ *         1 if out of memory.
+ */
+int flashrom_layout_new(struct flashrom_layout **const layout, const unsigned int count)
+{
+	*layout = malloc(sizeof(**layout) + count * sizeof(struct romentry));
+	if (!*layout) {
+		msg_gerr("Error creating layout: %s\n", strerror(errno));
+		return 1;
+	}
+
+	const struct flashrom_layout tmp = {
+		.entries	= (void *)((char *)*layout + sizeof(**layout)),
+		.capacity	= count,
+		.num_entries	= 0,
+	};
+	**layout = tmp;
+	return 0;
+}
+
+/**
  * @brief Add another region to an existing layout.
  *
  * @param layout The existing layout.
diff --git a/layout.h b/layout.h
index c72217e..9df1beb 100644
--- a/layout.h
+++ b/layout.h
@@ -51,11 +51,6 @@
 	size_t num_entries;
 };
 
-struct single_layout {
-	struct flashrom_layout base;
-	struct romentry entry;
-};
-
 struct layout_include_args {
 	char *name;
 	struct layout_include_args *next;
diff --git a/libflashrom.c b/libflashrom.c
index feba00a..9b5d875 100644
--- a/libflashrom.c
+++ b/libflashrom.c
@@ -206,6 +206,7 @@
 			ret = 0;
 			/* We found one chip, now check that there is no second match. */
 			if (probe_flash(&registered_masters[i], flash_idx + 1, &second_flashctx, 0) != -1) {
+				flashrom_layout_release(second_flashctx.default_layout);
 				free(second_flashctx.chip);
 				ret = 3;
 				break;
@@ -213,7 +214,7 @@
 		}
 	}
 	if (ret) {
-		free(*flashctx);
+		flashrom_flash_release(*flashctx);
 		*flashctx = NULL;
 	}
 	return ret;
@@ -240,6 +241,7 @@
 	if (!flashctx)
 		return;
 
+	flashrom_layout_release(flashctx->default_layout);
 	free(flashctx->chip);
 	free(flashctx);
 }
@@ -316,16 +318,10 @@
 #ifndef __FLASHROM_LITTLE_ENDIAN__
 	return 6;
 #else
-	struct ich_layout dump_layout;
+	struct flashrom_layout *dump_layout, *chip_layout;
 	int ret = 1;
 
 	void *const desc = malloc(0x1000);
-	struct ich_layout *const chip_layout = malloc(sizeof(*chip_layout));
-	if (!desc || !chip_layout) {
-		msg_gerr("Out of memory!\n");
-		goto _free_ret;
-	}
-
 	if (prepare_flash_access(flashctx, true, false, false, false))
 		goto _free_ret;
 
@@ -338,7 +334,7 @@
 	}
 	msg_cinfo("done.\n");
 
-	if (layout_from_ich_descriptors(chip_layout, desc, 0x1000)) {
+	if (layout_from_ich_descriptors(&chip_layout, desc, 0x1000)) {
 		msg_cerr("Couldn't parse the descriptor!\n");
 		ret = 3;
 		goto _finalize_ret;
@@ -351,12 +347,13 @@
 			goto _finalize_ret;
 		}
 
-		const struct romentry *chip_entry = layout_next(&chip_layout->base, NULL);
-		const struct romentry *dump_entry = layout_next(&dump_layout.base, NULL);
+		const struct romentry *chip_entry = layout_next(chip_layout, NULL);
+		const struct romentry *dump_entry = layout_next(dump_layout, NULL);
 		while (chip_entry && dump_entry && !memcmp(chip_entry, dump_entry, sizeof(*chip_entry))) {
-			chip_entry = layout_next(&chip_layout->base, chip_entry);
-			dump_entry = layout_next(&dump_layout.base, dump_entry);
+			chip_entry = layout_next(chip_layout, chip_entry);
+			dump_entry = layout_next(dump_layout, dump_entry);
 		}
+		flashrom_layout_release(dump_layout);
 		if (chip_entry || dump_entry) {
 			msg_cerr("Descriptors don't match!\n");
 			ret = 5;
@@ -371,7 +368,7 @@
 	finalize_flash_access(flashctx);
 _free_ret:
 	if (ret)
-		free(chip_layout);
+		flashrom_layout_release(chip_layout);
 	free(desc);
 	return ret;
 #endif
diff --git a/libflashrom.h b/libflashrom.h
index 1b8c753..c89d2e0 100644
--- a/libflashrom.h
+++ b/libflashrom.h
@@ -66,6 +66,7 @@
 int flashrom_image_verify(struct flashrom_flashctx *, const void *buffer, size_t buffer_len);
 
 struct flashrom_layout;
+int flashrom_layout_new(struct flashrom_layout **, unsigned int count);
 int flashrom_layout_read_from_ifd(struct flashrom_layout **, struct flashrom_flashctx *, const void *dump, size_t len);
 int flashrom_layout_read_fmap_from_rom(struct flashrom_layout **,
 		struct flashrom_flashctx *, size_t offset, size_t length);
