mtd: Use kasprintf() instead of fixed buffer formatting
authorGeert Uytterhoeven <geert+renesas@glider.be>
Thu, 28 Jun 2018 08:20:11 +0000 (10:20 +0200)
committerBoris Brezillon <boris.brezillon@bootlin.com>
Sat, 7 Jul 2018 08:53:45 +0000 (10:53 +0200)
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>
drivers/mtd/chips/gen_probe.c

index 879bebf9d8b120388382fd7c4c874398e91ea0d8..837b04ab96a9c526f19699655cfa9ee174bd190b 100644 (file)
@@ -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;