diff --git a/flashrom.c b/flashrom.c
index 361f135..8017849 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -1451,16 +1451,18 @@
  * contents will be compared.
  *
  * @param flashctx    Flash context to be used.
+ * @param layout      Flash layout information.
  * @param curcontents A buffer of full chip size to read current chip contents into.
  * @param newcontents The new image to compare to.
  * @return 0 on success,
  *	   1 if reading failed,
  *	   3 if the contents don't match.
  */
-static int verify_by_layout(struct flashctx *const flashctx,
-			    void *const curcontents, const uint8_t *const newcontents)
+static int verify_by_layout(
+		struct flashctx *const flashctx,
+		const struct flashrom_layout *const layout,
+		void *const curcontents, const uint8_t *const newcontents)
 {
-	const struct flashrom_layout *const layout = get_layout(flashctx);
 	const struct romentry *entry = NULL;
 
 	while ((entry = layout_next_included(layout, entry))) {
@@ -1969,6 +1971,8 @@
 	const size_t flash_size = flashctx->chip->total_size * 1024;
 	const bool verify_all = flashctx->flags.verify_whole_chip;
 	const bool verify = flashctx->flags.verify_after_write;
+	const struct flashrom_layout *const verify_layout =
+		verify_all ? get_default_layout(flashctx) : get_layout(flashctx);
 
 	if (buffer_len != flash_size)
 		return 4;
@@ -2057,19 +2061,14 @@
 
 	/* Verify only if we actually changed something. */
 	if (verify && !all_skipped) {
-		const struct flashrom_layout *const layout_bak = flashctx->layout;
-
 		msg_cinfo("Verifying flash... ");
 
 		/* Work around chips which need some time to calm down. */
 		programmer_delay(1000*1000);
 
-		if (verify_all) {
+		if (verify_all)
 			combine_image_by_layout(flashctx, newcontents, oldcontents);
-			flashctx->layout = NULL;
-		}
-		ret = verify_by_layout(flashctx, curcontents, newcontents);
-		flashctx->layout = layout_bak;
+		ret = verify_by_layout(flashctx, verify_layout, curcontents, newcontents);
 		/* If we tried to write, and verification now fails, we
 		   might have an emergency situation. */
 		if (ret)
@@ -2105,6 +2104,7 @@
  */
 int flashrom_image_verify(struct flashctx *const flashctx, const void *const buffer, const size_t buffer_len)
 {
+	const struct flashrom_layout *const layout = get_layout(flashctx);
 	const size_t flash_size = flashctx->chip->total_size * 1024;
 
 	if (buffer_len != flash_size)
@@ -2123,7 +2123,7 @@
 		goto _free_ret;
 
 	msg_cinfo("Verifying flash... ");
-	ret = verify_by_layout(flashctx, curcontents, newcontents);
+	ret = verify_by_layout(flashctx, layout, curcontents, newcontents);
 	if (!ret)
 		msg_cinfo("VERIFIED.\n");
 
