* [PATCH] mtd: Use kasprintf() instead of fixed buffer formatting
@ 2018-06-28 8:20 Geert Uytterhoeven
2018-07-07 10:01 ` Boris Brezillon
0 siblings, 1 reply; 2+ messages in thread
From: Geert Uytterhoeven @ 2018-06-28 8:20 UTC (permalink / raw)
To: David Woodhouse, Brian Norris, Boris Brezillon, Marek Vasut,
Richard Weinberger
Cc: Masahiro Yamada, linux-mtd, linux-kernel, Geert Uytterhoeven
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>
---
Compile-tested only.
Interestingly, this decreases code size (by 16 resp. 24 bytes on arm32
resp. arm64).
---
drivers/mtd/chips/gen_probe.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/mtd/chips/gen_probe.c b/drivers/mtd/chips/gen_probe.c
index 879bebf9d8b12038..837b04ab96a9c526 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;
--
2.17.1
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH] mtd: Use kasprintf() instead of fixed buffer formatting
2018-06-28 8:20 [PATCH] mtd: Use kasprintf() instead of fixed buffer formatting Geert Uytterhoeven
@ 2018-07-07 10:01 ` Boris Brezillon
0 siblings, 0 replies; 2+ messages in thread
From: Boris Brezillon @ 2018-07-07 10:01 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: David Woodhouse, Brian Norris, Marek Vasut, Richard Weinberger,
Masahiro Yamada, linux-mtd, linux-kernel
On Thu, 28 Jun 2018 10:20:11 +0200
Geert Uytterhoeven <geert+renesas@glider.be> wrote:
> 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>
Applied.
Thanks,
Boris
> ---
> Compile-tested only.
>
> Interestingly, this decreases code size (by 16 resp. 24 bytes on arm32
> resp. arm64).
> ---
> drivers/mtd/chips/gen_probe.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/mtd/chips/gen_probe.c b/drivers/mtd/chips/gen_probe.c
> index 879bebf9d8b12038..837b04ab96a9c526 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;
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2018-07-07 10:01 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-06-28 8:20 [PATCH] mtd: Use kasprintf() instead of fixed buffer formatting Geert Uytterhoeven
2018-07-07 10:01 ` Boris Brezillon
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox