summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiong Wang <jiong.wang@netronome.com>2019-05-24 18:25:19 -0400
committerAlexei Starovoitov <ast@kernel.org>2019-05-24 21:58:37 -0400
commit046561981b948e07df096a8402f9efc80bc784d9 (patch)
treef98a6321e327d3bb2649b2f8854d7106778b9f03
parentd6c2308c742a655f4598364ab331959639aae166 (diff)
libbpf: add "prog_flags" to bpf_program/bpf_prog_load_attr/bpf_load_program_attr
libbpf doesn't allow passing "prog_flags" during bpf program load in a couple of load related APIs, "bpf_load_program_xattr", "load_program" and "bpf_prog_load_xattr". It makes sense to allow passing "prog_flags" which is useful for customizing program loading. Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Jiong Wang <jiong.wang@netronome.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
-rw-r--r--tools/lib/bpf/bpf.c1
-rw-r--r--tools/lib/bpf/bpf.h1
-rw-r--r--tools/lib/bpf/libbpf.c3
-rw-r--r--tools/lib/bpf/libbpf.h1
4 files changed, 6 insertions, 0 deletions
diff --git a/tools/lib/bpf/bpf.c b/tools/lib/bpf/bpf.c
index c4a48086dc9a..0d4b4fe10a84 100644
--- a/tools/lib/bpf/bpf.c
+++ b/tools/lib/bpf/bpf.c
@@ -256,6 +256,7 @@ int bpf_load_program_xattr(const struct bpf_load_program_attr *load_attr,
256 if (load_attr->name) 256 if (load_attr->name)
257 memcpy(attr.prog_name, load_attr->name, 257 memcpy(attr.prog_name, load_attr->name,
258 min(strlen(load_attr->name), BPF_OBJ_NAME_LEN - 1)); 258 min(strlen(load_attr->name), BPF_OBJ_NAME_LEN - 1));
259 attr.prog_flags = load_attr->prog_flags;
259 260
260 fd = sys_bpf_prog_load(&attr, sizeof(attr)); 261 fd = sys_bpf_prog_load(&attr, sizeof(attr));
261 if (fd >= 0) 262 if (fd >= 0)
diff --git a/tools/lib/bpf/bpf.h b/tools/lib/bpf/bpf.h
index 9593fec75652..ff42ca043dc8 100644
--- a/tools/lib/bpf/bpf.h
+++ b/tools/lib/bpf/bpf.h
@@ -87,6 +87,7 @@ struct bpf_load_program_attr {
87 const void *line_info; 87 const void *line_info;
88 __u32 line_info_cnt; 88 __u32 line_info_cnt;
89 __u32 log_level; 89 __u32 log_level;
90 __u32 prog_flags;
90}; 91};
91 92
92/* Flags to direct loading requirements */ 93/* Flags to direct loading requirements */
diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
index 197b574406b3..ff149372b3c0 100644
--- a/tools/lib/bpf/libbpf.c
+++ b/tools/lib/bpf/libbpf.c
@@ -188,6 +188,7 @@ struct bpf_program {
188 void *line_info; 188 void *line_info;
189 __u32 line_info_rec_size; 189 __u32 line_info_rec_size;
190 __u32 line_info_cnt; 190 __u32 line_info_cnt;
191 __u32 prog_flags;
191}; 192};
192 193
193enum libbpf_map_type { 194enum libbpf_map_type {
@@ -2076,6 +2077,7 @@ load_program(struct bpf_program *prog, struct bpf_insn *insns, int insns_cnt,
2076 load_attr.line_info_rec_size = prog->line_info_rec_size; 2077 load_attr.line_info_rec_size = prog->line_info_rec_size;
2077 load_attr.line_info_cnt = prog->line_info_cnt; 2078 load_attr.line_info_cnt = prog->line_info_cnt;
2078 load_attr.log_level = prog->log_level; 2079 load_attr.log_level = prog->log_level;
2080 load_attr.prog_flags = prog->prog_flags;
2079 if (!load_attr.insns || !load_attr.insns_cnt) 2081 if (!load_attr.insns || !load_attr.insns_cnt)
2080 return -EINVAL; 2082 return -EINVAL;
2081 2083
@@ -3521,6 +3523,7 @@ int bpf_prog_load_xattr(const struct bpf_prog_load_attr *attr,
3521 expected_attach_type); 3523 expected_attach_type);
3522 3524
3523 prog->log_level = attr->log_level; 3525 prog->log_level = attr->log_level;
3526 prog->prog_flags = attr->prog_flags;
3524 if (!first_prog) 3527 if (!first_prog)
3525 first_prog = prog; 3528 first_prog = prog;
3526 } 3529 }
diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h
index c5ff00515ce7..5abc2375defd 100644
--- a/tools/lib/bpf/libbpf.h
+++ b/tools/lib/bpf/libbpf.h
@@ -320,6 +320,7 @@ struct bpf_prog_load_attr {
320 enum bpf_attach_type expected_attach_type; 320 enum bpf_attach_type expected_attach_type;
321 int ifindex; 321 int ifindex;
322 int log_level; 322 int log_level;
323 int prog_flags;
323}; 324};
324 325
325LIBBPF_API int bpf_prog_load_xattr(const struct bpf_prog_load_attr *attr, 326LIBBPF_API int bpf_prog_load_xattr(const struct bpf_prog_load_attr *attr,