From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Borkmann Subject: Re: [PATCH bpf-next 11/11] tools: bpftool: allow reuse of maps with bpftool prog load Date: Thu, 5 Jul 2018 10:35:24 +0200 Message-ID: <3db866ff-5712-c308-9eef-18deaadf490d@iogearbox.net> References: <20180704025417.8848-1-jakub.kicinski@netronome.com> <20180704025417.8848-12-jakub.kicinski@netronome.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Cc: oss-drivers@netronome.com, netdev@vger.kernel.org To: Jakub Kicinski , alexei.starovoitov@gmail.com Return-path: Received: from www62.your-server.de ([213.133.104.62]:36793 "EHLO www62.your-server.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753216AbeGEIf1 (ORCPT ); Thu, 5 Jul 2018 04:35:27 -0400 In-Reply-To: <20180704025417.8848-12-jakub.kicinski@netronome.com> Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: On 07/04/2018 04:54 AM, Jakub Kicinski wrote: > Add map parameter to prog load which will allow reuse of existing > maps instead of creating new ones. > > Signed-off-by: Jakub Kicinski > Reviewed-by: Quentin Monnet [...] > + > + fd = map_parse_fd(&argc, &argv); > + if (fd < 0) > + goto err_free_reuse_maps; > + > + map_replace = reallocarray(map_replace, old_map_fds + 1, > + sizeof(*map_replace)); > + if (!map_replace) { > + p_err("mem alloc failed"); > + goto err_free_reuse_maps; Series in general looks good to me. However, above reallocarray() doesn't exist and hence build fails, please see below. Is that from newest glibc? You probably need some fallback implementation or in general have something bpftool internal that doesn't make a bet on its availability. # make Auto-detecting system features: ... libbfd: [ on ] ... disassembler-four-args: [ OFF ] CC bpf_jit_disasm.o LINK bpf_jit_disasm CC bpf_dbg.o LINK bpf_dbg CC bpf_asm.o BISON bpf_exp.yacc.c CC bpf_exp.yacc.o FLEX bpf_exp.lex.c CC bpf_exp.lex.o LINK bpf_asm DESCEND bpftool Auto-detecting system features: ... libbfd: [ on ] ... disassembler-four-args: [ OFF ] CC map_perf_ring.o CC xlated_dumper.o CC perf.o CC prog.o prog.c: In function ‘do_load’: prog.c:785:18: warning: implicit declaration of function ‘reallocarray’ [-Wimplicit-function-declaration] map_replace = reallocarray(map_replace, old_map_fds + 1, ^~~~~~~~~~~~ prog.c:785:16: warning: assignment makes pointer from integer without a cast [-Wint-conversion] map_replace = reallocarray(map_replace, old_map_fds + 1, ^ CC common.o CC cgroup.o CC main.o CC json_writer.o CC cfg.o CC map.o CC jit_disasm.o CC disasm.o Auto-detecting system features: ... libelf: [ on ] ... bpf: [ on ] Warning: Kernel ABI header at 'tools/include/uapi/linux/bpf.h' differs from latest version at 'include/uapi/linux/bpf.h' CC libbpf.o CC bpf.o CC nlattr.o CC btf.o LD libbpf-in.o LINK libbpf.a LINK bpftool prog.o: In function `do_load': prog.c:(.text+0x23d): undefined reference to `reallocarray' collect2: error: ld returned 1 exit status Makefile:89: recipe for target 'bpftool' failed make[1]: *** [bpftool] Error 1 Makefile:99: recipe for target 'bpftool' failed make: *** [bpftool] Error 2 Thanks, Daniel