* [PATCH 1/1] libbpf: Use (uintptr_t) for a u64 cast to a void pointer to fix build on 32-bit arches
@ 2024-03-21 15:16 Arnaldo Carvalho de Melo
2024-03-21 15:59 ` Andrii Nakryiko
0 siblings, 1 reply; 3+ messages in thread
From: Arnaldo Carvalho de Melo @ 2024-03-21 15:16 UTC (permalink / raw)
To: Alexei Starovoitov, Andrii Nakryiko
Cc: Namhyung Kim, Ian Rogers, bpf, linux-perf-users
Noticed on several perf container builds:
perfbuilder@number:~$ grep -B1 -A2 "cast to pointer" dm.log/*\:*
dm.log/ubuntu:18.04-x-arm-libbpf.c: In function 'bpf_object__create_maps':
dm.log/ubuntu:18.04-x-arm:libbpf.c:5355:24: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
dm.log/ubuntu:18.04-x-arm- map->mmaped = mmap((void *)map->map_extra, bpf_map_mmap_sz(map),
dm.log/ubuntu:18.04-x-arm- ^
--
dm.log/ubuntu:18.04-x-powerpc-libbpf.c: In function 'bpf_object__create_maps':
dm.log/ubuntu:18.04-x-powerpc:libbpf.c:5355:24: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
dm.log/ubuntu:18.04-x-powerpc- map->mmaped = mmap((void *)map->map_extra, bpf_map_mmap_sz(map),
dm.log/ubuntu:18.04-x-powerpc- ^
--
dm.log/ubuntu:18.04-x-sh4-libbpf.c: In function 'bpf_object__create_maps':
dm.log/ubuntu:18.04-x-sh4:libbpf.c:5355:24: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
dm.log/ubuntu:18.04-x-sh4- map->mmaped = mmap((void *)map->map_extra, bpf_map_mmap_sz(map),
dm.log/ubuntu:18.04-x-sh4- ^
perfbuilder@number:~$
I think Namhyung mentioned as well on a chat conversation about noticing
this on a 32-bit build on Debian.
Fixes: 79ff13e99169ddb0 ("libbpf: Add support for bpf_arena.")
Reported-by: Namhyung Kim <namhyung@kernel.org>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Andrii Nakryiko <andrii@kernel.org>
Cc: Ian Rogers <irogers@google.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/lib/bpf/libbpf.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
index efab29b8935bd9f7..af0b0e24978558f8 100644
--- a/tools/lib/bpf/libbpf.c
+++ b/tools/lib/bpf/libbpf.c
@@ -14,6 +14,7 @@
#define _GNU_SOURCE
#endif
#include <stdlib.h>
+#include <stdint.h>
#include <stdio.h>
#include <stdarg.h>
#include <libgen.h>
@@ -5352,7 +5353,7 @@ bpf_object__create_maps(struct bpf_object *obj)
goto err_out;
}
if (map->def.type == BPF_MAP_TYPE_ARENA) {
- map->mmaped = mmap((void *)map->map_extra, bpf_map_mmap_sz(map),
+ map->mmaped = mmap((void *)(uintptr_t)map->map_extra, bpf_map_mmap_sz(map),
PROT_READ | PROT_WRITE,
map->map_extra ? MAP_SHARED | MAP_FIXED : MAP_SHARED,
map->fd, 0);
--
2.44.0
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH 1/1] libbpf: Use (uintptr_t) for a u64 cast to a void pointer to fix build on 32-bit arches
2024-03-21 15:16 [PATCH 1/1] libbpf: Use (uintptr_t) for a u64 cast to a void pointer to fix build on 32-bit arches Arnaldo Carvalho de Melo
@ 2024-03-21 15:59 ` Andrii Nakryiko
2024-03-21 16:06 ` Arnaldo Carvalho de Melo
0 siblings, 1 reply; 3+ messages in thread
From: Andrii Nakryiko @ 2024-03-21 15:59 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Alexei Starovoitov, Andrii Nakryiko, Namhyung Kim, Ian Rogers,
bpf, linux-perf-users
On Thu, Mar 21, 2024 at 8:16 AM Arnaldo Carvalho de Melo
<acme@kernel.org> wrote:
>
> Noticed on several perf container builds:
>
> perfbuilder@number:~$ grep -B1 -A2 "cast to pointer" dm.log/*\:*
> dm.log/ubuntu:18.04-x-arm-libbpf.c: In function 'bpf_object__create_maps':
> dm.log/ubuntu:18.04-x-arm:libbpf.c:5355:24: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> dm.log/ubuntu:18.04-x-arm- map->mmaped = mmap((void *)map->map_extra, bpf_map_mmap_sz(map),
> dm.log/ubuntu:18.04-x-arm- ^
> --
> dm.log/ubuntu:18.04-x-powerpc-libbpf.c: In function 'bpf_object__create_maps':
> dm.log/ubuntu:18.04-x-powerpc:libbpf.c:5355:24: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> dm.log/ubuntu:18.04-x-powerpc- map->mmaped = mmap((void *)map->map_extra, bpf_map_mmap_sz(map),
> dm.log/ubuntu:18.04-x-powerpc- ^
> --
> dm.log/ubuntu:18.04-x-sh4-libbpf.c: In function 'bpf_object__create_maps':
> dm.log/ubuntu:18.04-x-sh4:libbpf.c:5355:24: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> dm.log/ubuntu:18.04-x-sh4- map->mmaped = mmap((void *)map->map_extra, bpf_map_mmap_sz(map),
> dm.log/ubuntu:18.04-x-sh4- ^
> perfbuilder@number:~$
>
> I think Namhyung mentioned as well on a chat conversation about noticing
> this on a 32-bit build on Debian.
>
> Fixes: 79ff13e99169ddb0 ("libbpf: Add support for bpf_arena.")
> Reported-by: Namhyung Kim <namhyung@kernel.org>
> Cc: Alexei Starovoitov <ast@kernel.org>
> Cc: Andrii Nakryiko <andrii@kernel.org>
> Cc: Ian Rogers <irogers@google.com>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> ---
> tools/lib/bpf/libbpf.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
We've already landed a similar fix in the bpf tree, see [0].
[0] https://patchwork.kernel.org/project/netdevbpf/patch/20240319215143.1279312-1-andrii@kernel.org/
> diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
> index efab29b8935bd9f7..af0b0e24978558f8 100644
> --- a/tools/lib/bpf/libbpf.c
> +++ b/tools/lib/bpf/libbpf.c
> @@ -14,6 +14,7 @@
> #define _GNU_SOURCE
> #endif
> #include <stdlib.h>
> +#include <stdint.h>
> #include <stdio.h>
> #include <stdarg.h>
> #include <libgen.h>
> @@ -5352,7 +5353,7 @@ bpf_object__create_maps(struct bpf_object *obj)
> goto err_out;
> }
> if (map->def.type == BPF_MAP_TYPE_ARENA) {
> - map->mmaped = mmap((void *)map->map_extra, bpf_map_mmap_sz(map),
> + map->mmaped = mmap((void *)(uintptr_t)map->map_extra, bpf_map_mmap_sz(map),
> PROT_READ | PROT_WRITE,
> map->map_extra ? MAP_SHARED | MAP_FIXED : MAP_SHARED,
> map->fd, 0);
> --
> 2.44.0
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH 1/1] libbpf: Use (uintptr_t) for a u64 cast to a void pointer to fix build on 32-bit arches
2024-03-21 15:59 ` Andrii Nakryiko
@ 2024-03-21 16:06 ` Arnaldo Carvalho de Melo
0 siblings, 0 replies; 3+ messages in thread
From: Arnaldo Carvalho de Melo @ 2024-03-21 16:06 UTC (permalink / raw)
To: Andrii Nakryiko
Cc: Alexei Starovoitov, Andrii Nakryiko, Namhyung Kim, Ian Rogers,
bpf, linux-perf-users
On Thu, Mar 21, 2024 at 08:59:57AM -0700, Andrii Nakryiko wrote:
> On Thu, Mar 21, 2024 at 8:16 AM Arnaldo Carvalho de Melo
> > dm.log/ubuntu:18.04-x-sh4:libbpf.c:5355:24: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> > dm.log/ubuntu:18.04-x-sh4- map->mmaped = mmap((void *)map->map_extra, bpf_map_mmap_sz(map),
> > dm.log/ubuntu:18.04-x-sh4- ^
> > perfbuilder@number:~$
> > I think Namhyung mentioned as well on a chat conversation about noticing
> > this on a 32-bit build on Debian.
> > Fixes: 79ff13e99169ddb0 ("libbpf: Add support for bpf_arena.")
> > Reported-by: Namhyung Kim <namhyung@kernel.org>
> We've already landed a similar fix in the bpf tree, see [0].
>
> [0] https://patchwork.kernel.org/project/netdevbpf/patch/20240319215143.1279312-1-andrii@kernel.org/
Great, uintptr_t looks cleaner tho, but fits the bill.
- Arnaldo
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-03-21 16:06 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-21 15:16 [PATCH 1/1] libbpf: Use (uintptr_t) for a u64 cast to a void pointer to fix build on 32-bit arches Arnaldo Carvalho de Melo
2024-03-21 15:59 ` Andrii Nakryiko
2024-03-21 16:06 ` Arnaldo Carvalho de Melo
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.