* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).