diff mbox series

[net-next] bpf: fix pointer cast warning

Message ID 20210721212007.3876595-1-arnd@kernel.org
State New
Headers show
Series [net-next] bpf: fix pointer cast warning | expand

Commit Message

Arnd Bergmann July 21, 2021, 9:19 p.m. UTC
From: Arnd Bergmann <arnd@arndb.de>


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>

---
 kernel/trace/bpf_trace.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.29.2

Comments

Andrii Nakryiko July 21, 2021, 9:45 p.m. UTC | #1
On Wed, Jul 21, 2021 at 2:20 PM Arnd Bergmann <arnd@kernel.org> wrote:
>

> From: Arnd Bergmann <arnd@arndb.de>

>

> 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>

> ---


I'll take this through the bpf-next tree, if no one objects. Thanks for the fix!


>  kernel/trace/bpf_trace.c | 2 +-

>  1 file changed, 1 insertion(+), 1 deletion(-)

>

> diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c

> index 0de09f068697..a428d1ef0085 100644

> --- a/kernel/trace/bpf_trace.c

> +++ b/kernel/trace/bpf_trace.c

> @@ -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 = {

> --

> 2.29.2

>
diff mbox series

Patch

diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c
index 0de09f068697..a428d1ef0085 100644
--- a/kernel/trace/bpf_trace.c
+++ b/kernel/trace/bpf_trace.c
@@ -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 = {