--- a/drivers/mtd/nand/mtk_nand.c
+++ b/drivers/mtd/nand/mtk_nand.c
@@ -1017,8 +1017,8 @@ static int mtk_nfc_ooblayout_free(struct
 	if (section >= eccsteps)
 		return -ERANGE;
 
-	oob_region->length = fdm->reg_size - fdm->ecc_size;
-	oob_region->offset = section * fdm->reg_size + fdm->ecc_size;
+	oob_region->length = fdm->reg_size - 1;
+	oob_region->offset = section * fdm->reg_size + 1;
 
 	return 0;
 }
@@ -1058,7 +1058,7 @@ static void mtk_nfc_set_fdm(struct mtk_n
 		fdm->reg_size = NFI_FDM_MAX_SIZE;
 
 	/* bad block mark storage */
-	fdm->ecc_size = 1;
+	fdm->ecc_size = fdm->reg_size;
 }
 
 static void mtk_nfc_set_bad_mark_ctl(struct mtk_nfc_bad_mark_ctl *bm_ctl,
