2020-10-23 08:11:19

by Nick Desaulniers

[permalink] [raw]
Subject: [PATCH] bdi: fix -Wformat-security

mm/backing-dev.c:810:57: warning: format string is not a string literal
(potentially insecure) [-Wformat-security]
dev = device_create(bdi_class, NULL, MKDEV(0, 0), bdi, bdi->dev_name);
^~~~~~~~~~~~~

Signed-off-by: Nick Desaulniers <[email protected]>
---
Example patch showing off kernel development from a newly created twitch
stream! Check it out at: https://twitch.tv/ndesaulniers.

mm/backing-dev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/backing-dev.c b/mm/backing-dev.c
index 408d5051d05b..5755578d671d 100644
--- a/mm/backing-dev.c
+++ b/mm/backing-dev.c
@@ -807,7 +807,7 @@ int bdi_register_va(struct backing_dev_info *bdi, const char *fmt, va_list args)
return 0;

vsnprintf(bdi->dev_name, sizeof(bdi->dev_name), fmt, args);
- dev = device_create(bdi_class, NULL, MKDEV(0, 0), bdi, bdi->dev_name);
+ dev = device_create(bdi_class, NULL, MKDEV(0, 0), bdi, "%s", bdi->dev_name);
if (IS_ERR(dev))
return PTR_ERR(dev);

--
2.25.1


2020-10-23 08:12:40

by Christoph Hellwig

[permalink] [raw]
Subject: Re: [PATCH] bdi: fix -Wformat-security

On Thu, Oct 22, 2020 at 11:57:54PM -0700, Nick Desaulniers wrote:
> mm/backing-dev.c:810:57: warning: format string is not a string literal
> (potentially insecure) [-Wformat-security]
> dev = device_create(bdi_class, NULL, MKDEV(0, 0), bdi, bdi->dev_name);

The callers never pass format strings here. That being said the fix is
probably ok anyway, modulo the obvious style issue.

> diff --git a/mm/backing-dev.c b/mm/backing-dev.c
> index 408d5051d05b..5755578d671d 100644
> --- a/mm/backing-dev.c
> +++ b/mm/backing-dev.c
> @@ -807,7 +807,7 @@ int bdi_register_va(struct backing_dev_info *bdi, const char *fmt, va_list args)
> return 0;
>
> vsnprintf(bdi->dev_name, sizeof(bdi->dev_name), fmt, args);
> - dev = device_create(bdi_class, NULL, MKDEV(0, 0), bdi, bdi->dev_name);
> + dev = device_create(bdi_class, NULL, MKDEV(0, 0), bdi, "%s", bdi->dev_name);

Please don't introduce any over 80 char lines.