bpf: Fix pointer cast warning
authorArnd Bergmann <arnd@arndb.de>
Wed, 21 Jul 2021 21:19:45 +0000 (23:19 +0200)
committerAndrii Nakryiko <andrii@kernel.org>
Thu, 22 Jul 2021 23:27:42 +0000 (16:27 -0700)
kp->addr is a pointer, so it cannot be cast directly to a 'u64'
when it gets interpreted as an integer value:

kernel/trace/bpf_trace.c: In function '____bpf_get_func_ip_kprobe':
kernel/trace/bpf_trace.c:968:21: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
  968 |         return kp ? (u64) kp->addr : 0;

Use the uintptr_t type instead.

Fixes: 9ffd9f3ff719 ("bpf: Add bpf_get_func_ip helper for kprobe programs")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20210721212007.3876595-1-arnd@kernel.org
kernel/trace/bpf_trace.c

index 0890600..1f22ce1 100644 (file)
@@ -965,7 +965,7 @@ BPF_CALL_1(bpf_get_func_ip_kprobe, struct pt_regs *, regs)
 {
        struct kprobe *kp = kprobe_running();
 
-       return kp ? (u64) kp->addr : 0;
+       return kp ? (uintptr_t)kp->addr : 0;
 }
 
 static const struct bpf_func_proto bpf_get_func_ip_proto_kprobe = {