Linux has deprecated[1] strncpy(), and the use in skel_map_create() is best replaced with strscpy(). Since we still need to build this file in userspace, leave the strncpy() in place in that case. This is the last use of strncpy() in the kernel. Link: https://github.com/KSPP/linux/issues/90 [1] Signed-off-by: Kees Cook --- v5: Just ifdef for the kernel and use strscpy() there (Alexei) v4: https://lore.kernel.org/lkml/20260401001130.it.781-kees@kernel.org/ v3: https://lore.kernel.org/lkml/20260324161605.make.168-kees@kernel.org/ v2: https://lore.kernel.org/lkml/20260324053036.it.906-kees@kernel.org/ v1: https://lore.kernel.org/lkml/20260324040535.work.851-kees@kernel.org/ Cc: Alexei Starovoitov Cc: Jiri Olsa Cc: sun jian Cc: Andrii Nakryiko Cc: Eduard Zingerman Cc: Daniel Borkmann Cc: Martin KaFai Lau Cc: Song Liu Cc: Yonghong Song Cc: John Fastabend Cc: KP Singh Cc: Stanislav Fomichev Cc: Hao Luo Cc: --- tools/lib/bpf/skel_internal.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/lib/bpf/skel_internal.h b/tools/lib/bpf/skel_internal.h index 6a8f5c7a02eb..74503d358bc8 100644 --- a/tools/lib/bpf/skel_internal.h +++ b/tools/lib/bpf/skel_internal.h @@ -243,7 +243,12 @@ static inline int skel_map_create(enum bpf_map_type map_type, attr.excl_prog_hash = (unsigned long) excl_prog_hash; attr.excl_prog_hash_size = excl_prog_hash_sz; +#ifdef __KERNEL__ + if (strscpy(attr.map_name, map_name) < 0) + return -EINVAL; +#else strncpy(attr.map_name, map_name, sizeof(attr.map_name)); +#endif attr.key_size = key_size; attr.value_size = value_size; attr.max_entries = max_entries; -- 2.34.1