Эх сурвалжийг харах

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>
Geert Uytterhoeven 7 жил өмнө
parent
commit
4836024616

+ 5 - 2
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;
 	struct cfi_private *cfi = map->fldrv_priv;
 	__u16 type = primary?cfi->cfiq->P_ID:cfi->cfiq->A_ID;
 	__u16 type = primary?cfi->cfiq->P_ID:cfi->cfiq->A_ID;
 #ifdef CONFIG_MODULES
 #ifdef CONFIG_MODULES
-	char probename[sizeof("cfi_cmdset_%4.4X")];
 	cfi_cmdset_fn_t *probe_function;
 	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);
 	probe_function = __symbol_get(probename);
 	if (!probe_function) {
 	if (!probe_function) {
 		request_module("cfi_cmdset_%4.4X", type);
 		request_module("cfi_cmdset_%4.4X", type);
 		probe_function = __symbol_get(probename);
 		probe_function = __symbol_get(probename);
 	}
 	}
+	kfree(probename);
 
 
 	if (probe_function) {
 	if (probe_function) {
 		struct mtd_info *mtd;
 		struct mtd_info *mtd;