From f0c811dd15d09bee9c5ff34ed96930b3720a6f79 Mon Sep 17 00:00:00 2001 From: Peter Stuge Date: Fri, 5 Dec 2008 02:22:30 +0000 Subject: Check if erase succeeds and exit with error on failure Flashrom used to exit 0 even if erase failed. Not anymore. Corresponding to flashrom svn r359 and coreboot v2 svn r3797. Signed-off-by: Peter Stuge Acked-by: Stefan Reinauer --- flashrom.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'flashrom.c') diff --git a/flashrom.c b/flashrom.c index a75e452..4dd2ea1 100644 --- a/flashrom.c +++ b/flashrom.c @@ -250,6 +250,7 @@ int main(int argc, char *argv[]) { uint8_t *buf; unsigned long size; + size_t erasedbytes; FILE *image; /* Probe for up to three flash chips. */ struct flashchip *flash, *flashes[3]; @@ -533,13 +534,25 @@ int main(int argc, char *argv[]) if (erase_it) { printf("Erasing flash chip... "); - if (!flash->erase) { - fprintf(stderr, "Error: flashrom has no erase function for this flash chip.\n"); + if (NULL == flash->erase) { + printf("FAILED!\n"); + fprintf(stderr, "ERROR: flashrom has no erase function for this flash chip.\n"); return 1; } flash->erase(flash); - printf("done.\n"); - exit(0); + if (NULL == flash->read) + memcpy(buf, (const char *)flash->virtual_memory, size); + else + flash->read(flash, buf); + for (erasedbytes = 0; erasedbytes <= size; erasedbytes++) + if (0xff != buf[erasedbytes]) { + printf("FAILED!\n"); + fprintf(stderr, "ERROR at 0x%08x: Expected=0xff, Read=0x%02x\n", + erasedbytes, buf[erasedbytes]); + return 1; + } + printf("SUCCESS.\n"); + return 0; } else if (read_it) { if ((image = fopen(filename, "w")) == NULL) { perror(filename); -- cgit v1.1