[PATCH] mm/cma: Replace snprintf with strscpy in cma_new_area

Thorsten Blum posted 1 patch 1 week, 4 days ago
mm/cma.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
[PATCH] mm/cma: Replace snprintf with strscpy in cma_new_area
Posted by Thorsten Blum 1 week, 4 days ago
Replace snprintf("%s", ...) with the faster and more direct strscpy().

Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
---
 mm/cma.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/mm/cma.c b/mm/cma.c
index 813e6dc7b095..44b43de28c13 100644
--- a/mm/cma.c
+++ b/mm/cma.c
@@ -22,6 +22,7 @@
 #include <linux/mm.h>
 #include <linux/sizes.h>
 #include <linux/slab.h>
+#include <linux/string.h>
 #include <linux/string_choices.h>
 #include <linux/log2.h>
 #include <linux/cma.h>
@@ -233,7 +234,7 @@ static int __init cma_new_area(const char *name, phys_addr_t size,
 	cma_area_count++;
 
 	if (name)
-		snprintf(cma->name, CMA_MAX_NAME, "%s", name);
+		strscpy(cma->name, name);
 	else
 		snprintf(cma->name, CMA_MAX_NAME,  "cma%d\n", cma_area_count);
 
-- 
Thorsten Blum <thorsten.blum@linux.dev>
GPG: 1D60 735E 8AEF 3BE4 73B6  9D84 7336 78FD 8DFE EAD4
Re: [PATCH] mm/cma: Replace snprintf with strscpy in cma_new_area
Posted by SeongJae Park 1 week, 4 days ago
Hello Thorsten,

On Mon, 26 Jan 2026 18:45:15 +0100 Thorsten Blum <thorsten.blum@linux.dev> wrote:

> Replace snprintf("%s", ...) with the faster and more direct strscpy().
> 
> Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
> ---
>  mm/cma.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/mm/cma.c b/mm/cma.c
> index 813e6dc7b095..44b43de28c13 100644
> --- a/mm/cma.c
> +++ b/mm/cma.c
> @@ -22,6 +22,7 @@
>  #include <linux/mm.h>
>  #include <linux/sizes.h>
>  #include <linux/slab.h>
> +#include <linux/string.h>
>  #include <linux/string_choices.h>
>  #include <linux/log2.h>
>  #include <linux/cma.h>
> @@ -233,7 +234,7 @@ static int __init cma_new_area(const char *name, phys_addr_t size,
>  	cma_area_count++;
>  
>  	if (name)
> -		snprintf(cma->name, CMA_MAX_NAME, "%s", name);
> +		strscpy(cma->name, name);

Any reason to drop CMA_MAX_NAME protection?  You can pass the size of
destination buffer as the third argument of strscpy().


Thanks,
SJ

[...]
Re: [PATCH] mm/cma: Replace snprintf with strscpy in cma_new_area
Posted by Andrew Morton 1 week, 4 days ago
On Mon, 26 Jan 2026 16:47:22 -0800 SeongJae Park <sj@kernel.org> wrote:

> > @@ -233,7 +234,7 @@ static int __init cma_new_area(const char *name, phys_addr_t size,
> >  	cma_area_count++;
> >  
> >  	if (name)
> > -		snprintf(cma->name, CMA_MAX_NAME, "%s", name);
> > +		strscpy(cma->name, name);
> 
> Any reason to drop CMA_MAX_NAME protection?  You can pass the size of
> destination buffer as the third argument of strscpy().

strscpy() will now use sizeof(cma->name):

	char name[CMA_MAX_NAME];
Re: [PATCH] mm/cma: Replace snprintf with strscpy in cma_new_area
Posted by SeongJae Park 1 week, 4 days ago
On Mon, 26 Jan 2026 16:54:50 -0800 Andrew Morton <akpm@linux-foundation.org> wrote:

> On Mon, 26 Jan 2026 16:47:22 -0800 SeongJae Park <sj@kernel.org> wrote:
> 
> > > @@ -233,7 +234,7 @@ static int __init cma_new_area(const char *name, phys_addr_t size,
> > >  	cma_area_count++;
> > >  
> > >  	if (name)
> > > -		snprintf(cma->name, CMA_MAX_NAME, "%s", name);
> > > +		strscpy(cma->name, name);
> > 
> > Any reason to drop CMA_MAX_NAME protection?  You can pass the size of
> > destination buffer as the third argument of strscpy().
> 
> strscpy() will now use sizeof(cma->name):
> 
> 	char name[CMA_MAX_NAME];

Ah, you're right.

Reviewed-by: SeongJae Park <sj@kernel.org>


Thanks,
SJ