Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755024AbbKCPRY (ORCPT ); Tue, 3 Nov 2015 10:17:24 -0500 Received: from mail.kernel.org ([198.145.29.136]:37817 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753672AbbKCPRW (ORCPT ); Tue, 3 Nov 2015 10:17:22 -0500 Date: Tue, 3 Nov 2015 12:17:16 -0300 From: Arnaldo Carvalho de Melo To: Wang Nan Cc: lizefan@huawei.com, pi3orama@163.com, linux-kernel@vger.kernel.org Subject: Re: [PATCH 3/5] perf tools: Parsing libbpf return value using err.h Message-ID: <20151103151716.GO21609@kernel.org> References: <1446547486-229499-1-git-send-email-wangnan0@huawei.com> <1446547486-229499-4-git-send-email-wangnan0@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1446547486-229499-4-git-send-email-wangnan0@huawei.com> X-Url: http://acmel.wordpress.com User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2466 Lines: 73 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 > Cc: Arnaldo Carvalho de Melo > --- > 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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/