[PATCH] tracing: Replace deprecated strncpy() with memcpy() for stack_trace_filter_buf

From: Devaansh Kumar
Date: Thu Apr 03 2025 - 16:13:25 EST


strncpy() is deprecated for NUL-terminated destination buffers and must
be replaced by memcpy() for length bounded buffers.

See issue: https://github.com/KSPP/linux/issues/90

Signed-off-by: Devaansh Kumar <devaanshk840@xxxxxxxxx>
---
kernel/trace/trace_stack.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/kernel/trace/trace_stack.c b/kernel/trace/trace_stack.c
index 5a48dba912ea..427526fd2afd 100644
--- a/kernel/trace/trace_stack.c
+++ b/kernel/trace/trace_stack.c
@@ -3,6 +3,7 @@
* Copyright (C) 2008 Steven Rostedt <srostedt@xxxxxxxxxx>
*
*/
+#include <linux/compiler_attributes.h>
#include <linux/sched/task_stack.h>
#include <linux/stacktrace.h>
#include <linux/security.h>
@@ -537,14 +538,16 @@ stack_trace_sysctl(struct ctl_table *table, int write, void *buffer,
return ret;
}

-static char stack_trace_filter_buf[COMMAND_LINE_SIZE+1] __initdata;
+static char stack_trace_filter_buf[COMMAND_LINE_SIZE+1] __initdata __nonstring;

static __init int enable_stacktrace(char *str)
{
int len;

- if ((len = str_has_prefix(str, "_filter=")))
- strncpy(stack_trace_filter_buf, str + len, COMMAND_LINE_SIZE);
+ len = str_has_prefix(str, "_filter=");
+
+ if (len)
+ memcpy(stack_trace_filter_buf, str + len, sizeof(stack_trace_filter_buf));

stack_tracer_enabled = 1;
return 1;
--
2.47.1