diff mbox series

[bpf-next] libbpf: Support PPC in arch_specific_syscall_pfx

Message ID 20220728222345.3125975-1-deso@posteo.net (mailing list archive)
State Accepted
Commit 64893e83f916145fd23182209009e9d2ce36d2df
Delegated to: BPF
Headers show
Series [bpf-next] libbpf: Support PPC in arch_specific_syscall_pfx | expand

Checks

Context Check Description
bpf/vmtest-bpf-next-VM_Test-1 fail Logs for Kernel LATEST on ubuntu-latest with gcc
bpf/vmtest-bpf-next-VM_Test-2 fail Logs for Kernel LATEST on ubuntu-latest with llvm-15
bpf/vmtest-bpf-next-PR fail PR summary
bpf/vmtest-bpf-next-VM_Test-3 success Logs for Kernel LATEST on z15 with gcc
netdev/tree_selection success Clearly marked for bpf-next
netdev/apply success Patch already applied to bpf-next

Commit Message

Daniel Müller July 28, 2022, 10:23 p.m. UTC
Commit 708ac5bea0ce ("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: 708ac5bea0ce ("libbpf: add ksyscall/kretsyscall sections support for syscall kprobes")
Signed-off-by: Daniel Müller <deso@posteo.net>
---
 tools/lib/bpf/libbpf.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

Comments

patchwork-bot+netdevbpf@kernel.org July 28, 2022, 11:20 p.m. UTC | #1
Hello:

This patch was applied to bpf/bpf-next.git (master)
by Andrii Nakryiko <andrii@kernel.org>:

On Thu, 28 Jul 2022 22:23:45 +0000 you wrote:
> Commit 708ac5bea0ce ("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.
> 
> [...]

Here is the summary with links:
  - [bpf-next] libbpf: Support PPC in arch_specific_syscall_pfx
    https://git.kernel.org/bpf/bpf-next/c/64893e83f916

You are awesome, thank you!
diff mbox series

Patch

diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
index b01fe01..50d4181 100644
--- a/tools/lib/bpf/libbpf.c
+++ b/tools/lib/bpf/libbpf.c
@@ -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);
 	}