Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1574302 > unrolled thread

[PATCH net-next v1 6/7] bpf: Use the bpf_load_program() from the library

Started byMickaël Salaün <mic@digikod.net>
First post2017-02-06 00:20 +0100
Last post2017-02-06 23:50 +0100
Articles 7 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [PATCH net-next v1 6/7] bpf: Use the bpf_load_program() from the library Mickaël Salaün <mic@digikod.net> - 2017-02-06 00:20 +0100
    Re: [PATCH net-next v1 6/7] bpf: Use the bpf_load_program() from  the library Daniel Borkmann <daniel@iogearbox.net> - 2017-02-06 16:40 +0100
      Re: [PATCH net-next v1 6/7] bpf: Use the bpf_load_program() from the  library Mickaël Salaün <mic@digikod.net> - 2017-02-06 20:20 +0100
        Re: [PATCH net-next v1 6/7] bpf: Use the bpf_load_program() from  the library Daniel Borkmann <daniel@iogearbox.net> - 2017-02-06 20:20 +0100
          Re: [PATCH net-next v1 6/7] bpf: Use the bpf_load_program() from the  library Mickaël Salaün <mic@digikod.net> - 2017-02-06 22:40 +0100
            Re: [PATCH net-next v1 6/7] bpf: Use the bpf_load_program() from  the library Daniel Borkmann <daniel@iogearbox.net> - 2017-02-06 23:50 +0100
              Re: [PATCH net-next v1 6/7] bpf: Use the bpf_load_program() from the  library Mickaël Salaün <mic@digikod.net> - 2017-02-06 23:50 +0100

#1574302 — [PATCH net-next v1 6/7] bpf: Use the bpf_load_program() from the library

FromMickaël Salaün <mic@digikod.net>
Date2017-02-06 00:20 +0100
Subject[PATCH net-next v1 6/7] bpf: Use the bpf_load_program() from the library
Message-ID<t7Eg9-5mH-9@gated-at.bofh.it>
Replace bpf_prog_load() with bpf_load_program() calls.

Use the tools include directory instead of the installed one to allow
builds from other kernels.

Signed-off-by: Mickaël Salaün <mic@digikod.net>
Cc: Alexei Starovoitov <ast@fb.com>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Shuah Khan <shuah@kernel.org>
---
 tools/testing/selftests/bpf/Makefile        |  6 +++++-
 tools/testing/selftests/bpf/bpf_sys.h       | 21 ---------------------
 tools/testing/selftests/bpf/test_tag.c      |  6 ++++--
 tools/testing/selftests/bpf/test_verifier.c |  8 +++++---
 4 files changed, 14 insertions(+), 27 deletions(-)

diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
index 769a6cb42b4b..712861492278 100644
--- a/tools/testing/selftests/bpf/Makefile
+++ b/tools/testing/selftests/bpf/Makefile
@@ -1,12 +1,16 @@
-CFLAGS += -Wall -O2 -I../../../../usr/include
+CFLAGS += -Wall -O2 -I../../../include/uapi -I../../../lib
 
 test_objs = test_verifier test_tag test_maps test_lru_map test_lpm_map
 
 TEST_PROGS := $(test_objs) test_kmod.sh
 TEST_FILES := $(test_objs)
+LIBBPF := ../../../lib/bpf/bpf.o
 
 all: $(test_objs)
 
+test_verifier: $(LIBBPF)
+test_tag: $(LIBBPF)
+
 include ../lib.mk
 
 clean:
diff --git a/tools/testing/selftests/bpf/bpf_sys.h b/tools/testing/selftests/bpf/bpf_sys.h
index 6b4565f2a3f2..e7bbe3e5402e 100644
--- a/tools/testing/selftests/bpf/bpf_sys.h
+++ b/tools/testing/selftests/bpf/bpf_sys.h
@@ -84,25 +84,4 @@ static inline int bpf_map_create(enum bpf_map_type type, uint32_t size_key,
 	return bpf(BPF_MAP_CREATE, &attr, sizeof(attr));
 }
 
-static inline int bpf_prog_load(enum bpf_prog_type type,
-				const struct bpf_insn *insns, size_t size_insns,
-				const char *license, char *log, size_t size_log)
-{
-	union bpf_attr attr = {};
-
-	attr.prog_type = type;
-	attr.insns = bpf_ptr_to_u64(insns);
-	attr.insn_cnt = size_insns / sizeof(struct bpf_insn);
-	attr.license = bpf_ptr_to_u64(license);
-
-	if (size_log > 0) {
-		attr.log_buf = bpf_ptr_to_u64(log);
-		attr.log_size = size_log;
-		attr.log_level = 1;
-		log[0] = 0;
-	}
-
-	return bpf(BPF_PROG_LOAD, &attr, sizeof(attr));
-}
-
 #endif /* __BPF_SYS__ */
diff --git a/tools/testing/selftests/bpf/test_tag.c b/tools/testing/selftests/bpf/test_tag.c
index 5f7c602f47d1..b77dc4b03e77 100644
--- a/tools/testing/selftests/bpf/test_tag.c
+++ b/tools/testing/selftests/bpf/test_tag.c
@@ -16,6 +16,8 @@
 #include <linux/bpf.h>
 #include <linux/if_alg.h>
 
+#include <bpf/bpf.h>
+
 #include "../../../include/linux/filter.h"
 
 #include "bpf_sys.h"
@@ -55,8 +57,8 @@ static int bpf_try_load_prog(int insns, int fd_map,
 	int fd_prog;
 
 	bpf_filler(insns, fd_map);
-	fd_prog = bpf_prog_load(BPF_PROG_TYPE_SCHED_CLS, prog, insns *
-				sizeof(struct bpf_insn), "", NULL, 0);
+	fd_prog = bpf_load_program(BPF_PROG_TYPE_SCHED_CLS, prog, insns, "", 0,
+			NULL, 0);
 	assert(fd_prog > 0);
 	if (fd_map > 0)
 		bpf_filler(insns, 0);
diff --git a/tools/testing/selftests/bpf/test_verifier.c b/tools/testing/selftests/bpf/test_verifier.c
index 0d0912c7f03c..04a549e54f61 100644
--- a/tools/testing/selftests/bpf/test_verifier.c
+++ b/tools/testing/selftests/bpf/test_verifier.c
@@ -23,6 +23,8 @@
 #include <linux/bpf_perf_event.h>
 #include <linux/bpf.h>
 
+#include <bpf/bpf.h>
+
 #include "../../../include/linux/filter.h"
 
 #include "bpf_sys.h"
@@ -4456,9 +4458,9 @@ static void do_test_single(struct bpf_test *test, bool unpriv,
 
 	do_test_fixup(test, prog, &fd_f1, &fd_f2, &fd_f3);
 
-	fd_prog = bpf_prog_load(prog_type ? : BPF_PROG_TYPE_SOCKET_FILTER,
-				prog, prog_len * sizeof(struct bpf_insn),
-				"GPL", bpf_vlog, sizeof(bpf_vlog));
+	fd_prog = bpf_load_program(prog_type ? : BPF_PROG_TYPE_SOCKET_FILTER,
+				prog, prog_len, "GPL", 0, bpf_vlog,
+				sizeof(bpf_vlog));
 
 	expected_ret = unpriv && test->result_unpriv != UNDEF ?
 		       test->result_unpriv : test->result;
-- 
2.11.0

[toc] | [next] | [standalone]


#1574906 — Re: [PATCH net-next v1 6/7] bpf: Use the bpf_load_program() from the library

FromDaniel Borkmann <daniel@iogearbox.net>
Date2017-02-06 16:40 +0100
SubjectRe: [PATCH net-next v1 6/7] bpf: Use the bpf_load_program() from the library
Message-ID<t7Tyx-6JX-15@gated-at.bofh.it>
In reply to#1574302
On 02/06/2017 12:14 AM, Mickaël Salaün wrote:
> Replace bpf_prog_load() with bpf_load_program() calls.
>
> Use the tools include directory instead of the installed one to allow
> builds from other kernels.
>
> Signed-off-by: Mickaël Salaün <mic@digikod.net>
> Cc: Alexei Starovoitov <ast@fb.com>
> Cc: Daniel Borkmann <daniel@iogearbox.net>
> Cc: Shuah Khan <shuah@kernel.org>
> ---
>   tools/testing/selftests/bpf/Makefile        |  6 +++++-
>   tools/testing/selftests/bpf/bpf_sys.h       | 21 ---------------------
>   tools/testing/selftests/bpf/test_tag.c      |  6 ++++--
>   tools/testing/selftests/bpf/test_verifier.c |  8 +++++---
>   4 files changed, 14 insertions(+), 27 deletions(-)

No objections, but if so, can't we add the remaining missing
pieces to bpf lib, so we can remove bpf_sys.h altogether?

Thanks,
Daniel

[toc] | [prev] | [next] | [standalone]


#1575078 — Re: [PATCH net-next v1 6/7] bpf: Use the bpf_load_program() from the library

FromMickaël Salaün <mic@digikod.net>
Date2017-02-06 20:20 +0100
SubjectRe: [PATCH net-next v1 6/7] bpf: Use the bpf_load_program() from the library
Message-ID<t7WZr-HE-11@gated-at.bofh.it>
In reply to#1574906

[Multipart message — attachments visible in raw view] — view raw

On 06/02/2017 16:30, Daniel Borkmann wrote:
> On 02/06/2017 12:14 AM, Mickaël Salaün wrote:
>> Replace bpf_prog_load() with bpf_load_program() calls.
>>
>> Use the tools include directory instead of the installed one to allow
>> builds from other kernels.
>>
>> Signed-off-by: Mickaël Salaün <mic@digikod.net>
>> Cc: Alexei Starovoitov <ast@fb.com>
>> Cc: Daniel Borkmann <daniel@iogearbox.net>
>> Cc: Shuah Khan <shuah@kernel.org>
>> ---
>>   tools/testing/selftests/bpf/Makefile        |  6 +++++-
>>   tools/testing/selftests/bpf/bpf_sys.h       | 21 ---------------------
>>   tools/testing/selftests/bpf/test_tag.c      |  6 ++++--
>>   tools/testing/selftests/bpf/test_verifier.c |  8 +++++---
>>   4 files changed, 14 insertions(+), 27 deletions(-)
> 
> No objections, but if so, can't we add the remaining missing
> pieces to bpf lib, so we can remove bpf_sys.h altogether?
> 
> Thanks,
> Daniel
> 

OK, I'll send a new patch replacing bpf_sys.h entirely.

 Mickaël

[toc] | [prev] | [next] | [standalone]


#1575085 — Re: [PATCH net-next v1 6/7] bpf: Use the bpf_load_program() from the library

FromDaniel Borkmann <daniel@iogearbox.net>
Date2017-02-06 20:20 +0100
SubjectRe: [PATCH net-next v1 6/7] bpf: Use the bpf_load_program() from the library
Message-ID<t7WZs-HE-27@gated-at.bofh.it>
In reply to#1575078
On 02/06/2017 08:16 PM, Mickaël Salaün wrote:
> On 06/02/2017 16:30, Daniel Borkmann wrote:
>> On 02/06/2017 12:14 AM, Mickaël Salaün wrote:
>>> Replace bpf_prog_load() with bpf_load_program() calls.
>>>
>>> Use the tools include directory instead of the installed one to allow
>>> builds from other kernels.
>>>
>>> Signed-off-by: Mickaël Salaün <mic@digikod.net>
>>> Cc: Alexei Starovoitov <ast@fb.com>
>>> Cc: Daniel Borkmann <daniel@iogearbox.net>
>>> Cc: Shuah Khan <shuah@kernel.org>
>>> ---
>>>    tools/testing/selftests/bpf/Makefile        |  6 +++++-
>>>    tools/testing/selftests/bpf/bpf_sys.h       | 21 ---------------------
>>>    tools/testing/selftests/bpf/test_tag.c      |  6 ++++--
>>>    tools/testing/selftests/bpf/test_verifier.c |  8 +++++---
>>>    4 files changed, 14 insertions(+), 27 deletions(-)
>>
>> No objections, but if so, can't we add the remaining missing
>> pieces to bpf lib, so we can remove bpf_sys.h altogether?
>
> OK, I'll send a new patch replacing bpf_sys.h entirely.

Sounds great, thanks!

[toc] | [prev] | [next] | [standalone]


#1575173 — Re: [PATCH net-next v1 6/7] bpf: Use the bpf_load_program() from the library

FromMickaël Salaün <mic@digikod.net>
Date2017-02-06 22:40 +0100
SubjectRe: [PATCH net-next v1 6/7] bpf: Use the bpf_load_program() from the library
Message-ID<t7ZaX-214-37@gated-at.bofh.it>
In reply to#1575085

[Multipart message — attachments visible in raw view] — view raw

On 06/02/2017 20:18, Daniel Borkmann wrote:
> On 02/06/2017 08:16 PM, Mickaël Salaün wrote:
>> On 06/02/2017 16:30, Daniel Borkmann wrote:
>>> On 02/06/2017 12:14 AM, Mickaël Salaün wrote:
>>>> Replace bpf_prog_load() with bpf_load_program() calls.
>>>>
>>>> Use the tools include directory instead of the installed one to allow
>>>> builds from other kernels.
>>>>
>>>> Signed-off-by: Mickaël Salaün <mic@digikod.net>
>>>> Cc: Alexei Starovoitov <ast@fb.com>
>>>> Cc: Daniel Borkmann <daniel@iogearbox.net>
>>>> Cc: Shuah Khan <shuah@kernel.org>
>>>> ---
>>>>    tools/testing/selftests/bpf/Makefile        |  6 +++++-
>>>>    tools/testing/selftests/bpf/bpf_sys.h       | 21
>>>> ---------------------
>>>>    tools/testing/selftests/bpf/test_tag.c      |  6 ++++--
>>>>    tools/testing/selftests/bpf/test_verifier.c |  8 +++++---
>>>>    4 files changed, 14 insertions(+), 27 deletions(-)
>>>
>>> No objections, but if so, can't we add the remaining missing
>>> pieces to bpf lib, so we can remove bpf_sys.h altogether?
>>
>> OK, I'll send a new patch replacing bpf_sys.h entirely.
> 
> Sounds great, thanks!
> 

Do you prefer a big patch or one for each replaced function?

[toc] | [prev] | [next] | [standalone]


#1575215 — Re: [PATCH net-next v1 6/7] bpf: Use the bpf_load_program() from the library

FromDaniel Borkmann <daniel@iogearbox.net>
Date2017-02-06 23:50 +0100
SubjectRe: [PATCH net-next v1 6/7] bpf: Use the bpf_load_program() from the library
Message-ID<t80gG-2FR-7@gated-at.bofh.it>
In reply to#1575173
On 02/06/2017 10:30 PM, Mickaël Salaün wrote:
> On 06/02/2017 20:18, Daniel Borkmann wrote:
>> On 02/06/2017 08:16 PM, Mickaël Salaün wrote:
>>> On 06/02/2017 16:30, Daniel Borkmann wrote:
>>>> On 02/06/2017 12:14 AM, Mickaël Salaün wrote:
>>>>> Replace bpf_prog_load() with bpf_load_program() calls.
>>>>>
>>>>> Use the tools include directory instead of the installed one to allow
>>>>> builds from other kernels.
>>>>>
>>>>> Signed-off-by: Mickaël Salaün <mic@digikod.net>
>>>>> Cc: Alexei Starovoitov <ast@fb.com>
>>>>> Cc: Daniel Borkmann <daniel@iogearbox.net>
>>>>> Cc: Shuah Khan <shuah@kernel.org>
>>>>> ---
>>>>>     tools/testing/selftests/bpf/Makefile        |  6 +++++-
>>>>>     tools/testing/selftests/bpf/bpf_sys.h       | 21
>>>>> ---------------------
>>>>>     tools/testing/selftests/bpf/test_tag.c      |  6 ++++--
>>>>>     tools/testing/selftests/bpf/test_verifier.c |  8 +++++---
>>>>>     4 files changed, 14 insertions(+), 27 deletions(-)
>>>>
>>>> No objections, but if so, can't we add the remaining missing
>>>> pieces to bpf lib, so we can remove bpf_sys.h altogether?
>>>
>>> OK, I'll send a new patch replacing bpf_sys.h entirely.
>>
>> Sounds great, thanks!
>
> Do you prefer a big patch or one for each replaced function?

I think it makes sense to split it into two: i) this patch as-is
for the prog part, and ii) rest for maps.

[toc] | [prev] | [next] | [standalone]


#1575219 — Re: [PATCH net-next v1 6/7] bpf: Use the bpf_load_program() from the library

FromMickaël Salaün <mic@digikod.net>
Date2017-02-06 23:50 +0100
SubjectRe: [PATCH net-next v1 6/7] bpf: Use the bpf_load_program() from the library
Message-ID<t80gG-2FR-23@gated-at.bofh.it>
In reply to#1575215

[Multipart message — attachments visible in raw view] — view raw

On 06/02/2017 23:44, Daniel Borkmann wrote:
> On 02/06/2017 10:30 PM, Mickaël Salaün wrote:
>> On 06/02/2017 20:18, Daniel Borkmann wrote:
>>> On 02/06/2017 08:16 PM, Mickaël Salaün wrote:
>>>> On 06/02/2017 16:30, Daniel Borkmann wrote:
>>>>> On 02/06/2017 12:14 AM, Mickaël Salaün wrote:
>>>>>> Replace bpf_prog_load() with bpf_load_program() calls.
>>>>>>
>>>>>> Use the tools include directory instead of the installed one to allow
>>>>>> builds from other kernels.
>>>>>>
>>>>>> Signed-off-by: Mickaël Salaün <mic@digikod.net>
>>>>>> Cc: Alexei Starovoitov <ast@fb.com>
>>>>>> Cc: Daniel Borkmann <daniel@iogearbox.net>
>>>>>> Cc: Shuah Khan <shuah@kernel.org>
>>>>>> ---
>>>>>>     tools/testing/selftests/bpf/Makefile        |  6 +++++-
>>>>>>     tools/testing/selftests/bpf/bpf_sys.h       | 21
>>>>>> ---------------------
>>>>>>     tools/testing/selftests/bpf/test_tag.c      |  6 ++++--
>>>>>>     tools/testing/selftests/bpf/test_verifier.c |  8 +++++---
>>>>>>     4 files changed, 14 insertions(+), 27 deletions(-)
>>>>>
>>>>> No objections, but if so, can't we add the remaining missing
>>>>> pieces to bpf lib, so we can remove bpf_sys.h altogether?
>>>>
>>>> OK, I'll send a new patch replacing bpf_sys.h entirely.
>>>
>>> Sounds great, thanks!
>>
>> Do you prefer a big patch or one for each replaced function?
> 
> I think it makes sense to split it into two: i) this patch as-is
> for the prog part, and ii) rest for maps.
> 

Hum, I already split them to ease the review. I'm going to send this
series now.

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web