mtd: Replace the expert mode symbols with a single helper
authorMiquel Raynal <miquel.raynal@bootlin.com>
Fri, 28 Jan 2022 11:34:14 +0000 (12:34 +0100)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Mon, 7 Feb 2022 15:36:11 +0000 (16:36 +0100)
Reduce the number of exported symbols by replacing:
- mtd_expert_analysis_warning (the error string)
- mtd_expert_analysis_mode (the boolean)
with a single helper:
- mtd_check_expert_analysis_mode

Calling this helper will both check/return the content of the internal
boolean -which is not exported anymore- and as well conditionally
WARN_ONCE() the user, like it was done before.

While on this function, make the error string local to the helper and
set it const. Only export this helper when CONFIG_DEBUG_FS is defined to
limit the growth of the Linux kernel size only for a debug feature on
production kernels.

Mechanically update all the consumers.

Suggested-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20220128113414.1121924-1-miquel.raynal@bootlin.com
drivers/mtd/mtdcore.c
drivers/mtd/nand/core.c
drivers/mtd/nand/raw/nand_base.c
drivers/mtd/nand/raw/nand_bbt.c
include/linux/mtd/mtd.h

index 70f492d..1e7f3bb 100644 (file)
@@ -358,6 +358,21 @@ static int mtd_partname_debug_show(struct seq_file *s, void *p)
 
 DEFINE_SHOW_ATTRIBUTE(mtd_partname_debug);
 
+static bool mtd_expert_analysis_mode;
+
+#ifdef CONFIG_DEBUG_FS
+bool mtd_check_expert_analysis_mode(void)
+{
+       const char *mtd_expert_analysis_warning =
+               "Bad block checks have been entirely disabled.\n"
+               "This is only reserved for post-mortem forensics and debug purposes.\n"
+               "Never enable this mode if you do not know what you are doing!\n";
+
+       return WARN_ONCE(mtd_expert_analysis_mode, mtd_expert_analysis_warning);
+}
+EXPORT_SYMBOL_GPL(mtd_check_expert_analysis_mode);
+#endif
+
 static struct dentry *dfs_dir_mtd;
 
 static void mtd_debugfs_populate(struct mtd_info *mtd)
@@ -2370,14 +2385,6 @@ static struct backing_dev_info * __init mtd_bdi_init(const char *name)
        return ret ? ERR_PTR(ret) : bdi;
 }
 
-char *mtd_expert_analysis_warning =
-       "Bad block checks have been entirely disabled.\n"
-       "This is only reserved for post-mortem forensics and debug purposes.\n"
-       "Never enable this mode if you do not know what you are doing!\n";
-EXPORT_SYMBOL_GPL(mtd_expert_analysis_warning);
-bool mtd_expert_analysis_mode;
-EXPORT_SYMBOL_GPL(mtd_expert_analysis_mode);
-
 static struct proc_dir_entry *proc_mtd;
 
 static int __init init_mtd(void)
index 416947f..3ff99a4 100644 (file)
@@ -21,7 +21,7 @@
  */
 bool nanddev_isbad(struct nand_device *nand, const struct nand_pos *pos)
 {
-       if (WARN_ONCE(mtd_expert_analysis_mode, mtd_expert_analysis_warning))
+       if (mtd_check_expert_analysis_mode())
                return false;
 
        if (nanddev_bbt_is_initialized(nand)) {
index e7b2ba0..068ecf9 100644 (file)
@@ -321,7 +321,7 @@ static int nand_isbad_bbm(struct nand_chip *chip, loff_t ofs)
        if (nand_region_is_secured(chip, ofs, mtd->erasesize))
                return -EIO;
 
-       if (WARN_ONCE(mtd_expert_analysis_mode, mtd_expert_analysis_warning))
+       if (mtd_check_expert_analysis_mode())
                return 0;
 
        if (chip->legacy.block_bad)
index ab630af..a3723da 100644 (file)
@@ -1455,7 +1455,7 @@ int nand_isbad_bbt(struct nand_chip *this, loff_t offs, int allowbbt)
        pr_debug("nand_isbad_bbt(): bbt info for offs 0x%08x: (block %d) 0x%02x\n",
                 (unsigned int)offs, block, res);
 
-       if (WARN_ONCE(mtd_expert_analysis_mode, mtd_expert_analysis_warning))
+       if (mtd_check_expert_analysis_mode())
                return 0;
 
        switch (res) {
index 1ffa933..1b3fc8c 100644 (file)
@@ -711,7 +711,11 @@ static inline int mtd_is_bitflip_or_eccerr(int err) {
 
 unsigned mtd_mmap_capabilities(struct mtd_info *mtd);
 
-extern char *mtd_expert_analysis_warning;
-extern bool mtd_expert_analysis_mode;
+#ifdef CONFIG_DEBUG_FS
+bool mtd_check_expert_analysis_mode(void);
+#else
+static inline bool mtd_check_expert_analysis_mode(void) { return false; }
+#endif
+
 
 #endif /* __MTD_MTD_H__ */