From: "Mickaël Salaün" <mic@digikod.net>
To: linux-kernel@vger.kernel.org
Cc: "Mickaël Salaün" <mic@digikod.net>,
"Alexei Starovoitov" <ast@fb.com>,
"Arnaldo Carvalho de Melo" <acme@redhat.com>,
"Daniel Borkmann" <daniel@iogearbox.net>,
"David S . Miller" <davem@davemloft.net>,
"Joe Stringer" <joe@ovn.org>,
netdev@vger.kernel.org, "Wang Nan" <wangnan0@huawei.com>
Subject: [PATCH v3 2/5] bpf: Simplify bpf_load_program() error handling in the library
Date: Tue, 7 Feb 2017 21:56:06 +0100 [thread overview]
Message-ID: <20170207205609.8035-3-mic@digikod.net> (raw)
In-Reply-To: <20170207205609.8035-1-mic@digikod.net>
Do not call a second time bpf(2) when a program load failed.
Signed-off-by: Mickaël Salaün <mic@digikod.net>
Cc: Alexei Starovoitov <ast@fb.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Wang Nan <wangnan0@huawei.com>
---
tools/lib/bpf/bpf.c | 18 ++++++------------
1 file changed, 6 insertions(+), 12 deletions(-)
diff --git a/tools/lib/bpf/bpf.c b/tools/lib/bpf/bpf.c
index 3ddb58a36d3c..fda3f494f1cd 100644
--- a/tools/lib/bpf/bpf.c
+++ b/tools/lib/bpf/bpf.c
@@ -73,7 +73,6 @@ int bpf_load_program(enum bpf_prog_type type, struct bpf_insn *insns,
size_t insns_cnt, char *license,
__u32 kern_version, char *log_buf, size_t log_buf_sz)
{
- int fd;
union bpf_attr attr;
bzero(&attr, sizeof(attr));
@@ -81,20 +80,15 @@ int bpf_load_program(enum bpf_prog_type type, struct bpf_insn *insns,
attr.insn_cnt = (__u32)insns_cnt;
attr.insns = ptr_to_u64(insns);
attr.license = ptr_to_u64(license);
- attr.log_buf = ptr_to_u64(NULL);
- attr.log_size = 0;
- attr.log_level = 0;
+ attr.log_buf = ptr_to_u64(log_buf);
+ attr.log_size = log_buf_sz;
attr.kern_version = kern_version;
- fd = sys_bpf(BPF_PROG_LOAD, &attr, sizeof(attr));
- if (fd >= 0 || !log_buf || !log_buf_sz)
- return fd;
+ if (log_buf && log_buf_sz > 0) {
+ attr.log_level = 1;
+ log_buf[0] = 0;
+ }
- /* Try again with log */
- attr.log_buf = ptr_to_u64(log_buf);
- attr.log_size = log_buf_sz;
- attr.log_level = 1;
- log_buf[0] = 0;
return sys_bpf(BPF_PROG_LOAD, &attr, sizeof(attr));
}
--
2.11.0
next prev parent reply other threads:[~2017-02-07 20:57 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-07 20:56 [PATCH v3 0/5] Miscellaneous fixes for BPF (perf tree) Mickaël Salaün
2017-02-07 20:56 ` [PATCH v3 1/5] bpf: Add missing header to the library Mickaël Salaün
2017-02-08 2:47 ` Wangnan (F)
2017-02-08 19:40 ` Arnaldo Carvalho de Melo
2017-02-07 20:56 ` Mickaël Salaün [this message]
2017-02-08 2:35 ` [PATCH v3 2/5] bpf: Simplify bpf_load_program() error handling in " Wangnan (F)
2017-02-08 20:03 ` Mickaël Salaün
2017-02-07 20:56 ` [PATCH v3 3/5] samples/bpf: Ignore already processed ELF sections Mickaël Salaün
2017-02-07 20:56 ` [PATCH v3 4/5] samples/bpf: Reset global variables Mickaël Salaün
2017-02-07 20:56 ` [PATCH v3 5/5] samples/bpf: Add missing header Mickaël Salaün
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170207205609.8035-3-mic@digikod.net \
--to=mic@digikod.net \
--cc=acme@redhat.com \
--cc=ast@fb.com \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=joe@ovn.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=wangnan0@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.