diff options
author | Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp> | 2017-11-08 07:55:47 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-11-11 06:34:42 +0300 |
commit | 1852719658c0f853b5481c9eaed862f1a9355edc (patch) | |
tree | 2e80c8518feee8cc5b5e277239b5b1e30b4f1b43 | |
parent | 329fca60a95981ea7e22ab69243f0a59c6ca2eca (diff) | |
download | linux-1852719658c0f853b5481c9eaed862f1a9355edc.tar.xz |
tools: bpftool: open pinned object without type check
This was needed for opening any file in bpf-fs without knowing
its object type
Signed-off-by: Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | tools/bpf/bpftool/common.c | 15 | ||||
-rw-r--r-- | tools/bpf/bpftool/main.h | 1 |
2 files changed, 14 insertions, 2 deletions
diff --git a/tools/bpf/bpftool/common.c b/tools/bpf/bpftool/common.c index aa7017098b2a..6b3d25d6a782 100644 --- a/tools/bpf/bpftool/common.c +++ b/tools/bpf/bpftool/common.c @@ -122,9 +122,8 @@ static int mnt_bpffs(const char *target, char *buff, size_t bufflen) return 0; } -int open_obj_pinned_any(char *path, enum bpf_obj_type exp_type) +int open_obj_pinned(char *path) { - enum bpf_obj_type type; int fd; fd = bpf_obj_get(path); @@ -136,6 +135,18 @@ int open_obj_pinned_any(char *path, enum bpf_obj_type exp_type) return -1; } + return fd; +} + +int open_obj_pinned_any(char *path, enum bpf_obj_type exp_type) +{ + enum bpf_obj_type type; + int fd; + + fd = open_obj_pinned(path); + if (fd < 0) + return -1; + type = get_fd_type(fd); if (type < 0) { close(fd); diff --git a/tools/bpf/bpftool/main.h b/tools/bpf/bpftool/main.h index ff5ad05b137b..2ff2a361af0d 100644 --- a/tools/bpf/bpftool/main.h +++ b/tools/bpf/bpftool/main.h @@ -89,6 +89,7 @@ int cmd_select(const struct cmd *cmds, int argc, char **argv, int get_fd_type(int fd); const char *get_fd_type_name(enum bpf_obj_type type); char *get_fdinfo(int fd, const char *key); +int open_obj_pinned(char *path); int open_obj_pinned_any(char *path, enum bpf_obj_type exp_type); int do_pin_any(int argc, char **argv, int (*get_fd_by_id)(__u32)); |