0014-mtd-spi-nor-fix-error-handling-in-spi_nor_erase.patch 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. From 93aa2e2f5af5b8e766fc22c3ff83a1642462025f Mon Sep 17 00:00:00 2001
  2. From: Heiner Kallweit <hkallweit1@gmail.com>
  3. Date: Tue, 17 Nov 2015 20:18:54 +0100
  4. Subject: [PATCH 14/33] mtd: spi-nor: fix error handling in spi_nor_erase
  5. The documenting comment of mtd_erase in mtdcore.c states:
  6. Device drivers are supposed to call instr->callback() whenever
  7. the operation completes, even if it completes with a failure.
  8. Currently the callback isn't called in case of failure. Fix this.
  9. Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
  10. Signed-off-by: Brian Norris <computersforpeace@gmail.com>
  11. ---
  12. drivers/mtd/spi-nor/spi-nor.c | 8 ++------
  13. 1 file changed, 2 insertions(+), 6 deletions(-)
  14. diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
  15. index 3a50eea..43e00e2 100644
  16. --- a/drivers/mtd/spi-nor/spi-nor.c
  17. +++ b/drivers/mtd/spi-nor/spi-nor.c
  18. @@ -410,17 +410,13 @@ static int spi_nor_erase(struct mtd_info *mtd, struct erase_info *instr)
  19. write_disable(nor);
  20. +erase_err:
  21. spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_ERASE);
  22. - instr->state = MTD_ERASE_DONE;
  23. + instr->state = ret ? MTD_ERASE_FAILED : MTD_ERASE_DONE;
  24. mtd_erase_callback(instr);
  25. return ret;
  26. -
  27. -erase_err:
  28. - spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_ERASE);
  29. - instr->state = MTD_ERASE_FAILED;
  30. - return ret;
  31. }
  32. static void stm_get_locked_range(struct spi_nor *nor, u8 sr, loff_t *ofs,
  33. --
  34. 2.8.1