From fafed75d9831c8038c5504fc94e941f0ee9770e5 Mon Sep 17 00:00:00 2001 From: Jon Povey Date: Mon, 17 May 2010 16:15:35 +0900 Subject: NAND: catch read errors when building BBT nand_build_bbt() was ignoring the return value from nand_read_page() and blindly continuing. It now passes the return value up to the caller if the read fails. Signed-off-by: Jon Povey --- src/flash/nand/core.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/flash/nand/core.c') diff --git a/src/flash/nand/core.c b/src/flash/nand/core.c index 44b13ce1..b3220e2a 100644 --- a/src/flash/nand/core.c +++ b/src/flash/nand/core.c @@ -226,6 +226,7 @@ int nand_build_bbt(struct nand_device *nand, int first, int last) int i; int pages_per_block = (nand->erase_size / nand->page_size); uint8_t oob[6]; + int ret; if ((first < 0) || (first >= nand->num_blocks)) first = 0; @@ -236,7 +237,9 @@ int nand_build_bbt(struct nand_device *nand, int first, int last) page = first * pages_per_block; for (i = first; i <= last; i++) { - nand_read_page(nand, page, NULL, 0, oob, 6); + ret = nand_read_page(nand, page, NULL, 0, oob, 6); + if (ret != ERROR_OK) + return ret; if (((nand->device->options & NAND_BUSWIDTH_16) && ((oob[0] & oob[1]) != 0xff)) || (((nand->page_size == 512) && (oob[5] != 0xff)) || -- cgit v1.2.3