BPF List
 help / color / mirror / Atom feed
* [PATCH v5] libbpf: Use strscpy() in kernel code for skel_map_create()
@ 2026-05-13  5:08 Kees Cook
  2026-05-13 18:03 ` patchwork-bot+netdevbpf
  2026-05-14  1:56 ` sashiko-bot
  0 siblings, 2 replies; 4+ messages in thread
From: Kees Cook @ 2026-05-13  5:08 UTC (permalink / raw)
  To: Alexei Starovoitov
  Cc: Kees Cook, Jiri Olsa, sun jian, Andrii Nakryiko, Eduard Zingerman,
	Daniel Borkmann, Martin KaFai Lau, Song Liu, Yonghong Song,
	John Fastabend, KP Singh, Stanislav Fomichev, Hao Luo, bpf,
	Kumar Kartikeya Dwivedi, linux-kernel, linux-hardening

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 <kees@kernel.org>
---
 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 <ast@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: sun jian <sun.jian.kdev@gmail.com>
Cc: Andrii Nakryiko <andrii@kernel.org>
Cc: Eduard Zingerman <eddyz87@gmail.com>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Martin KaFai Lau <martin.lau@linux.dev>
Cc: Song Liu <song@kernel.org>
Cc: Yonghong Song <yonghong.song@linux.dev>
Cc: John Fastabend <john.fastabend@gmail.com>
Cc: KP Singh <kpsingh@kernel.org>
Cc: Stanislav Fomichev <sdf@fomichev.me>
Cc: Hao Luo <haoluo@google.com>
Cc: <bpf@vger.kernel.org>
---
 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


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v5] libbpf: Use strscpy() in kernel code for skel_map_create()
  2026-05-13  5:08 [PATCH v5] libbpf: Use strscpy() in kernel code for skel_map_create() Kees Cook
@ 2026-05-13 18:03 ` patchwork-bot+netdevbpf
  2026-05-14  1:56 ` sashiko-bot
  1 sibling, 0 replies; 4+ messages in thread
From: patchwork-bot+netdevbpf @ 2026-05-13 18:03 UTC (permalink / raw)
  To: Kees Cook
  Cc: ast, jolsa, sun.jian.kdev, andrii, eddyz87, daniel, martin.lau,
	song, yonghong.song, john.fastabend, kpsingh, sdf, haoluo, bpf,
	memxor, linux-kernel, linux-hardening

Hello:

This patch was applied to bpf/bpf-next.git (master)
by Alexei Starovoitov <ast@kernel.org>:

On Tue, 12 May 2026 22:08:07 -0700 you wrote:
> 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 <kees@kernel.org>
> 
> [...]

Here is the summary with links:
  - [v5] libbpf: Use strscpy() in kernel code for skel_map_create()
    https://git.kernel.org/bpf/bpf-next/c/74a9bb761a43

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v5] libbpf: Use strscpy() in kernel code for skel_map_create()
  2026-05-13  5:08 [PATCH v5] libbpf: Use strscpy() in kernel code for skel_map_create() Kees Cook
  2026-05-13 18:03 ` patchwork-bot+netdevbpf
@ 2026-05-14  1:56 ` sashiko-bot
  2026-05-14  3:20   ` Kees Cook
  1 sibling, 1 reply; 4+ messages in thread
From: sashiko-bot @ 2026-05-14  1:56 UTC (permalink / raw)
  To: Kees Cook; +Cc: bpf

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] The use of the 2-argument `strscpy` macro in `skel_internal.h` breaks compilation of light skeletons for out-of-tree kernel modules on kernels older than 6.8.
--

commit 056f88b29a55562ae428a73e0cbb771aa82987a6
Author: Kees Cook <kees@kernel.org>

libbpf: Use strscpy() in kernel code for skel_map_create()

This commit replaces a deprecated strncpy() call with strscpy() in
skel_map_create() when building for the kernel, leaving the user-space
version unchanged.

Link: https://github.com/KSPP/linux/issues/90 [1]

> diff --git a/tools/lib/bpf/skel_internal.h b/tools/lib/bpf/skel_internal.h
> --- 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)

Does this break backwards compatibility for out-of-tree kernel modules using
generated light skeletons on kernels older than 6.8?

The 2-argument strscpy macro was introduced in Linux 6.8. Older kernels like
6.1 LTS and 6.6 LTS only provide the 3-argument version:
ssize_t strscpy(char *dest, const char *src, size_t count).

Compiling this generated skeleton code on older kernels will result in a
compiler error due to too few arguments.

Would it be better to use the 3-argument version here instead?
strscpy(attr.map_name, map_name, sizeof(attr.map_name))

> +		return -EINVAL;
> +#else
>  	strncpy(attr.map_name, map_name, sizeof(attr.map_name));
> +#endif

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260513050806.do.620-kees@kernel.org?part=1

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v5] libbpf: Use strscpy() in kernel code for skel_map_create()
  2026-05-14  1:56 ` sashiko-bot
@ 2026-05-14  3:20   ` Kees Cook
  0 siblings, 0 replies; 4+ messages in thread
From: Kees Cook @ 2026-05-14  3:20 UTC (permalink / raw)
  To: sashiko-bot; +Cc: bpf

On Thu, May 14, 2026 at 01:56:09AM +0000, sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [Medium] The use of the 2-argument `strscpy` macro in `skel_internal.h` breaks compilation of light skeletons for out-of-tree kernel modules on kernels older than 6.8.

True, but this is strictly for 7.1 or later. :)

-- 
Kees Cook

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-05-14  3:20 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-13  5:08 [PATCH v5] libbpf: Use strscpy() in kernel code for skel_map_create() Kees Cook
2026-05-13 18:03 ` patchwork-bot+netdevbpf
2026-05-14  1:56 ` sashiko-bot
2026-05-14  3:20   ` Kees Cook

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox