mtd: nand: mxs_nand_spl: don't read useless pages

Message ID 20221120095705.3019295-1-dario.binacchi@amarulasolutions.com
State New
Headers show
Series
  • mtd: nand: mxs_nand_spl: don't read useless pages
Related show

Commit Message

Dario Binacchi Nov. 20, 2022, 9:57 a.m. UTC
The patch prevents pages beyond the last from being unnecessarily read.
This occurs when the last page to be read is not the last page of the
last block. Before this change we would have read all the pages up to
the end of the last block.

Suggested-by: Michael Trimarchi <michael@amarulasolutions.com>
Co-developed-by: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>

---

 drivers/mtd/nand/raw/mxs_nand_spl.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Michael Nazzareno Trimarchi Nov. 25, 2022, 3:35 p.m. UTC | #1
On Sun, Nov 20, 2022 at 10:57 AM Dario Binacchi
<dario.binacchi@amarulasolutions.com> wrote:
>
> The patch prevents pages beyond the last from being unnecessarily read.
> This occurs when the last page to be read is not the last page of the
> last block. Before this change we would have read all the pages up to
> the end of the last block.
>
> Suggested-by: Michael Trimarchi <michael@amarulasolutions.com>
> Co-developed-by: Michael Trimarchi <michael@amarulasolutions.com>
> Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
> Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
>

Acked-by: Michael Trimarchi <michael@amarulasolutions.com>

> ---
>
>  drivers/mtd/nand/raw/mxs_nand_spl.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/mtd/nand/raw/mxs_nand_spl.c b/drivers/mtd/nand/raw/mxs_nand_spl.c
> index ef03b7789dd9..300662994cf2 100644
> --- a/drivers/mtd/nand/raw/mxs_nand_spl.c
> +++ b/drivers/mtd/nand/raw/mxs_nand_spl.c
> @@ -257,7 +257,7 @@ int nand_spl_load_image(uint32_t offs, unsigned int size, void *dst)
>         while (block <= lastblock && size > 0) {
>                 if (!is_badblock(mtd, mtd->erasesize * block, 1)) {
>                         /* Skip bad blocks */
> -                       while (page < nand_page_per_block) {
> +                       while (page < nand_page_per_block && size) {
>                                 int curr_page = nand_page_per_block * block + page;
>
>                                 if (mxs_read_page_ecc(mtd, page_buf, curr_page) < 0) {
> --
> 2.32.0
>

Patch

diff --git a/drivers/mtd/nand/raw/mxs_nand_spl.c b/drivers/mtd/nand/raw/mxs_nand_spl.c
index ef03b7789dd9..300662994cf2 100644
--- a/drivers/mtd/nand/raw/mxs_nand_spl.c
+++ b/drivers/mtd/nand/raw/mxs_nand_spl.c
@@ -257,7 +257,7 @@  int nand_spl_load_image(uint32_t offs, unsigned int size, void *dst)
 	while (block <= lastblock && size > 0) {
 		if (!is_badblock(mtd, mtd->erasesize * block, 1)) {
 			/* Skip bad blocks */
-			while (page < nand_page_per_block) {
+			while (page < nand_page_per_block && size) {
 				int curr_page = nand_page_per_block * block + page;
 
 				if (mxs_read_page_ecc(mtd, page_buf, curr_page) < 0) {