aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeert Uytterhoeven <geert+renesas@glider.be>2018-06-28 10:20:11 +0200
committerBoris Brezillon <boris.brezillon@bootlin.com>2018-07-07 10:53:45 +0200
commit48360246162b50e84a6e63ed572fdda5e038518b (patch)
treef5ed143d1b0ca4808ab45874c80148cf131f4f40
parent98534a58c8a40cdc9e3bcb04d74719fbcedfeb52 (diff)
downloadlinux-48360246162b50e84a6e63ed572fdda5e038518b.tar.gz
mtd: Use kasprintf() instead of fixed buffer formatting
Using "%4.4X" in the calculation of the buffer size is misleading, as the format string literal has no relation to the actual size needed. Hence this is fragile w.r.t. future modification. As this is not a hot path, fix this by replacing the formatting in a fixed buffer by kasprintf(). Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
-rw-r--r--drivers/mtd/chips/gen_probe.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/mtd/chips/gen_probe.c b/drivers/mtd/chips/gen_probe.c
index 879bebf9d8b12..837b04ab96a9c 100644
--- a/drivers/mtd/chips/gen_probe.c
+++ b/drivers/mtd/chips/gen_probe.c
@@ -202,16 +202,19 @@ static inline struct mtd_info *cfi_cmdset_unknown(struct map_info *map,
struct cfi_private *cfi = map->fldrv_priv;
__u16 type = primary?cfi->cfiq->P_ID:cfi->cfiq->A_ID;
#ifdef CONFIG_MODULES
- char probename[sizeof("cfi_cmdset_%4.4X")];
cfi_cmdset_fn_t *probe_function;
+ char *probename;
- sprintf(probename, "cfi_cmdset_%4.4X", type);
+ probename = kasprintf(GFP_KERNEL, "cfi_cmdset_%4.4X", type);
+ if (!probename)
+ return NULL;
probe_function = __symbol_get(probename);
if (!probe_function) {
request_module("cfi_cmdset_%4.4X", type);
probe_function = __symbol_get(probename);
}
+ kfree(probename);
if (probe_function) {
struct mtd_info *mtd;