Le 08/06/2026 à 21:32, Thorsten Blum a écrit :
strlcat() should not be used anymore (see fortify-string.h), and since name is guaranteed to be NUL-terminated within KSYM_NAME_LEN bytes, use memcpy() instead. Rename dot_appended to the semantically clearer prepend_dot while at it. Signed-off-by: Thorsten Blum <[email protected]>
Please take https://patchwork.ozlabs.org/project/linuxppc-dev/patch/[email protected]/ instead
Christophe
--- arch/powerpc/include/asm/text-patching.h | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/arch/powerpc/include/asm/text-patching.h b/arch/powerpc/include/asm/text-patching.h index e7f14720f630..c47b813bd067 100644 --- a/arch/powerpc/include/asm/text-patching.h +++ b/arch/powerpc/include/asm/text-patching.h @@ -227,22 +227,21 @@ static inline unsigned long ppc_kallsyms_lookup_name(const char *name) #ifdef CONFIG_PPC64_ELF_ABI_V1 /* check for dot variant */ char dot_name[1 + KSYM_NAME_LEN]; - bool dot_appended = false; + bool prepend_dot = name[0] != '.'; + size_t len = strnlen(name, KSYM_NAME_LEN);- if (strnlen(name, KSYM_NAME_LEN) >= KSYM_NAME_LEN)+ if (len == KSYM_NAME_LEN) return 0;- if (name[0] != '.') {+ if (prepend_dot) { dot_name[0] = '.'; - dot_name[1] = '\0'; - strlcat(dot_name, name, sizeof(dot_name)); - dot_appended = true; + memcpy(dot_name + 1, name, len + 1); } else { - dot_name[0] = '\0'; - strlcat(dot_name, name, sizeof(dot_name)); + memcpy(dot_name, name, len + 1); } + addr = kallsyms_lookup_name(dot_name); - if (!addr && dot_appended) + if (!addr && prepend_dot) /* Let's try the original non-dot symbol lookup */ addr = kallsyms_lookup_name(name); #elif defined(CONFIG_PPC64_ELF_ABI_V2)
