diff --git a/flashrom.c b/flashrom.c
index 5446fc5fc7c775d2baba3354872e38b1ad632e13..abcd3d2684317ac9101ad60e983dac4bf7929d53 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -159,7 +159,11 @@ int verify_flash(struct flashchip *flash, uint8_t *buf)
 {
 	int idx;
 	int total_size = flash->total_size * 1024;
-	volatile uint8_t *bios = flash->virtual_memory;
+	uint8_t *buf2 = (uint8_t *) calloc(total_size, sizeof(char));
+	if (flash->read == NULL)
+		memcpy(buf2, (const char *)flash->virtual_memory, total_size);
+	else
+		flash->read(flash, buf2);
 
 	printf("Verifying flash... ");
 
@@ -170,7 +174,7 @@ int verify_flash(struct flashchip *flash, uint8_t *buf)
 		if (verbose && ((idx & 0xfff) == 0xfff))
 			printf("0x%08x", idx);
 
-		if (*(bios + idx) != *(buf + idx)) {
+		if (*(buf2 + idx) != *(buf + idx)) {
 			if (verbose) {
 				printf("0x%08x ", idx);
 			}