Commit 64893e83 authored by Daniel Müller's avatar Daniel Müller Committed by Andrii Nakryiko

libbpf: Support PPC in arch_specific_syscall_pfx

Commit 708ac5be ("libbpf: add ksyscall/kretsyscall sections support
for syscall kprobes") added the arch_specific_syscall_pfx() function,
which returns a string representing the architecture in use. As it turns
out this function is currently not aware of Power PC, where NULL is
returned. That's being flagged by the libbpf CI system, which builds for
ppc64le and the compiler sees a NULL pointer being passed in to a %s
format string.
With this change we add representations for two more architectures, for
Power PC and Power PC 64, and also adjust the string format logic to
handle NULL pointers gracefully, in an attempt to prevent similar issues
with other architectures in the future.

Fixes: 708ac5be ("libbpf: add ksyscall/kretsyscall sections support for syscall kprobes")
Signed-off-by: default avatarDaniel Müller <deso@posteo.net>
Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20220728222345.3125975-1-deso@posteo.net
parent 40b09653
......@@ -9995,6 +9995,10 @@ static const char *arch_specific_syscall_pfx(void)
return "mips";
#elif defined(__riscv)
return "riscv";
#elif defined(__powerpc__)
return "powerpc";
#elif defined(__powerpc64__)
return "powerpc64";
#else
return NULL;
#endif
......@@ -10127,8 +10131,13 @@ struct bpf_link *bpf_program__attach_ksyscall(const struct bpf_program *prog,
return libbpf_err_ptr(-EINVAL);
if (kernel_supports(prog->obj, FEAT_SYSCALL_WRAPPER)) {
/* arch_specific_syscall_pfx() should never return NULL here
* because it is guarded by kernel_supports(). However, since
* compiler does not know that we have an explicit conditional
* as well.
*/
snprintf(func_name, sizeof(func_name), "__%s_sys_%s",
arch_specific_syscall_pfx(), syscall_name);
arch_specific_syscall_pfx() ? : "", syscall_name);
} else {
snprintf(func_name, sizeof(func_name), "__se_sys_%s", syscall_name);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment