[PATCH v5 0/4] mtd: core: protect access to mtd devices while in suspend

From: Sean Nyekjaer
Date: Tue Nov 02 2021 - 07:02:25 EST


Changes since v4:
- removed protection around _panic_write()
- removed all fixes tag, as a simpler solution is needed for
backporting.

Follow-up on discussion in:
https://lkml.org/lkml/2021/10/4/41
https://lkml.org/lkml/2021/10/11/435

Changes since v3:
- edited commit msg and author for mtdconcat patch

Changes since v2:
- added signoff's to patch from Boris
- removed accidential line break
- kept tests consistent: master->master.suspended == 0 -> !master->master.suspended
- added comments to mtdconcat patch
- moved mtdconcat before ('mtd: core: protect access to MTD devices while in suspend')

Changes since v1:
- removed __mtd_suspend/__mtd_resume functions as they are not used by
mtdconcat anymore.
- only master mtd_info is used for mtd_{start,end}_access(). Warn if we
got mtd's.
- added Boris patch for using uninitialized _suspend/_resume hooks when
bbt scanning
- mtdconcat uses device _suspend/_resume hooks
- I don't really like the macro proposal from Boris
mtd_no_suspend_void_call()/mtd_no_suspend_ret_call() I think they
make the code complex to read and the macro's doesn't fit every
where anyway...

Changes since from rfc v1/v2:
- added access protection for all device access hooks in mtd_info.
- added Suggested-by to [1/3] patch.
- removed refereces to commit ef347c0cfd61 ("mtd: rawnand: gpmi: Implement exec_op")
from commit msg as commit 013e6292aaf5 ("mtd: rawnand: Simplify the locking") is
to be blamed.
- tested on a kernel with LOCKDEP enabled.

Boris Brezillon (2):
mtd: rawnand: nand_bbt: hide suspend/resume hooks while scanning bbt
mtd: mtdconcat: don't use mtd_{suspend,resume}()

Sean Nyekjaer (2):
mtd: core: protect access to MTD devices while in suspend
mtd: rawnand: remove suspended check

drivers/mtd/mtdconcat.c | 15 +++-
drivers/mtd/mtdcore.c | 124 +++++++++++++++++++++++++++----
drivers/mtd/nand/raw/nand_base.c | 52 ++++---------
drivers/mtd/nand/raw/nand_bbt.c | 28 ++++++-
include/linux/mtd/mtd.h | 81 ++++++++++++++++----
include/linux/mtd/rawnand.h | 5 +-
6 files changed, 230 insertions(+), 75 deletions(-)

--
2.33.0