Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b61bf5bb authored by Brian Norris's avatar Brian Norris Committed by Artem Bityutskiy
Browse files

mtd: nand: remove gotos in `check_create()'



This is a second step in restructuring `check_create()'. When we don't
rely on goto statements for our main functionality, the code will become
a little easier to manipulate.

Signed-off-by: default avatarBrian Norris <computersforpeace@gmail.com>
Signed-off-by: default avatarArtem Bityutskiy <artem.bityutskiy@intel.com>
parent c5e8ef9c
Loading
Loading
Loading
Loading
+19 −16
Original line number Diff line number Diff line
@@ -875,7 +875,7 @@ static inline int nand_memory_bbt(struct mtd_info *mtd, struct nand_bbt_descr *b
 */
static int check_create(struct mtd_info *mtd, uint8_t *buf, struct nand_bbt_descr *bd)
{
	int i, chips, writeops, chipsel, res;
	int i, chips, writeops, create, chipsel, res;
	struct nand_chip *this = mtd->priv;
	struct nand_bbt_descr *td = this->bbt_td;
	struct nand_bbt_descr *md = this->bbt_md;
@@ -889,6 +889,7 @@ static int check_create(struct mtd_info *mtd, uint8_t *buf, struct nand_bbt_desc

	for (i = 0; i < chips; i++) {
		writeops = 0;
		create = 0;
		rd = NULL;
		rd2 = NULL;
		/* Per chip or per device? */
@@ -896,8 +897,8 @@ static int check_create(struct mtd_info *mtd, uint8_t *buf, struct nand_bbt_desc
		/* Mirrored table available? */
		if (md) {
			if (td->pages[i] == -1 && md->pages[i] == -1) {
				create = 1;
				writeops = 0x03;
				goto create;
			} else if (td->pages[i] == -1) {
				rd = md;
				td->version[i] = md->version[i];
@@ -921,13 +922,14 @@ static int check_create(struct mtd_info *mtd, uint8_t *buf, struct nand_bbt_desc
			}
		} else {
			if (td->pages[i] == -1) {
				create = 1;
				writeops = 0x01;
				goto create;
			}
			} else {
				rd = td;
			}
		goto writecheck;
	create:
		}

		if (create) {
			/* Create the bad block table by scanning the device? */
			if (!(td->options & NAND_BBT_CREATE))
				continue;
@@ -939,7 +941,8 @@ static int check_create(struct mtd_info *mtd, uint8_t *buf, struct nand_bbt_desc
			td->version[i] = 1;
			if (md)
				md->version[i] = 1;
	writecheck:
		}

		/* Read back first? */
		if (rd)
			read_abs_bbt(mtd, buf, rd, chipsel);