Messages in this thread Patch in this message | | | Date | Tue, 3 Nov 2015 12:17:16 -0300 | From | Arnaldo Carvalho de Melo <> | Subject | Re: [PATCH 3/5] perf tools: Parsing libbpf return value using err.h |
| |
Em Tue, Nov 03, 2015 at 10:44:44AM +0000, Wang Nan escreveu: > In following patches libbpf would encode error code using return > pointer instead of returnning a NULL pointer to indicate error. This > patch makes a preperation to enable perf correctly receive error code > from libbpf. > > Signed-off-by: Wang Nan <wangnan0@huawei.com> > Cc: Arnaldo Carvalho de Melo <acme@redhat.com> > --- > tools/perf/tests/llvm.c | 2 +- > tools/perf/util/bpf-loader.c | 8 ++++---- > 2 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/tools/perf/tests/llvm.c b/tools/perf/tests/llvm.c > index 512d362..38e0d9a 100644 > --- a/tools/perf/tests/llvm.c > +++ b/tools/perf/tests/llvm.c > @@ -27,7 +27,7 @@ static int test__bpf_parsing(void *obj_buf, size_t obj_buf_sz) > struct bpf_object *obj; > > obj = bpf_object__open_buffer(obj_buf, obj_buf_sz, NULL); > - if (!obj) > + if (IS_ERR(obj) || !obj)
Well, since we've adopted IS_ERR() from the kernel, we better try to follow how it is used there, no?
Since you move to use ERR_PTR(), you probably will never return NULL, right? So whay the (|| !obj) part?
The kernel has an IS_ERR_OR_NULL() interface tho, trying to figure out when that would be appropriate...
- Arnaldo
> return -1; > bpf_object__close(obj); > return 0; > diff --git a/tools/perf/util/bpf-loader.c b/tools/perf/util/bpf-loader.c > index 0c5d174..dd6fa27 100644 > --- a/tools/perf/util/bpf-loader.c > +++ b/tools/perf/util/bpf-loader.c > @@ -59,9 +59,9 @@ struct bpf_object *bpf__prepare_load(const char *filename, bool source) > } else > obj = bpf_object__open(filename); > > - if (!obj) { > + if (IS_ERR(obj) || !obj) { > pr_debug("bpf: failed to load %s\n", filename); > - return ERR_PTR(-EINVAL); > + return !obj ? ERR_PTR(-EINVAL) : obj; > } > > return obj; > @@ -96,9 +96,9 @@ config_bpf_program(struct bpf_program *prog) > int err; > > config_str = bpf_program__title(prog, false); > - if (!config_str) { > + if (IS_ERR(config_str) || !config_str) { > pr_debug("bpf: unable to get title for program\n"); > - return -EINVAL; > + return !config_str ? -EINVAL : PTR_ERR(config_str); > } > > priv = calloc(sizeof(*priv), 1); > -- > 1.8.3.4
| |