All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Leblond <eric@regit.org>
To: Daniel Borkmann <daniel@iogearbox.net>,
	Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>,
	Philippe Ombredanne <pombredanne@nexb.com>
Cc: Alexei Starovoitov <alexei.starovoitov@gmail.com>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	Thomas Graf <tgraf@suug.ch>
Subject: Re: [PATCH bpf-next v5 2/4] libbpf: add error reporting in XDP
Date: Fri, 19 Jan 2018 00:35:37 +0100	[thread overview]
Message-ID: <1516318537.24936.7.camel@regit.org> (raw)
In-Reply-To: <10a2c572-9f2e-8cad-675d-b960c215c557@iogearbox.net>

Hi,

Sorry for the delay, missed the mail.

On Sat, 2018-01-06 at 22:16 +0100, Daniel Borkmann wrote:
> On 01/04/2018 09:21 AM, Eric Leblond wrote:
> > Parse netlink ext attribute to get the error message returned by
> > the card. Code is partially take from libnl.
> > 
> > Signed-off-by: Eric Leblond <eric@regit.org>
> > Acked-by: Alexei Starovoitov <ast@kernel.org>
> > ---
> >  samples/bpf/Makefile   |   2 +-
> >  tools/lib/bpf/Build    |   2 +-
> >  tools/lib/bpf/bpf.c    |  10 ++-
> >  tools/lib/bpf/nlattr.c | 187
> > +++++++++++++++++++++++++++++++++++++++++++++++++
> >  tools/lib/bpf/nlattr.h |  70 ++++++++++++++++++
> >  5 files changed, 268 insertions(+), 3 deletions(-)
> >  create mode 100644 tools/lib/bpf/nlattr.c
> >  create mode 100644 tools/lib/bpf/nlattr.h
> > 
> > diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile
> > index 4fb944a7ecf8..c889ebcba9b3 100644
> > --- a/samples/bpf/Makefile
> > +++ b/samples/bpf/Makefile
> > @@ -44,7 +44,7 @@ hostprogs-y += xdp_monitor
> >  hostprogs-y += syscall_tp
> >  
> >  # Libbpf dependencies
> > -LIBBPF := ../../tools/lib/bpf/bpf.o
> > +LIBBPF := ../../tools/lib/bpf/bpf.o ../../tools/lib/bpf/nlattr.o
> >  CGROUP_HELPERS :=
> > ../../tools/testing/selftests/bpf/cgroup_helpers.o
> >  
> >  test_lru_dist-objs := test_lru_dist.o $(LIBBPF)
> > diff --git a/tools/lib/bpf/Build b/tools/lib/bpf/Build
> > index d8749756352d..64c679d67109 100644
> > --- a/tools/lib/bpf/Build
> > +++ b/tools/lib/bpf/Build
> > @@ -1 +1 @@
> > -libbpf-y := libbpf.o bpf.o
> > +libbpf-y := libbpf.o bpf.o nlattr.o
> > diff --git a/tools/lib/bpf/bpf.c b/tools/lib/bpf/bpf.c
> > index e6c61035b64c..10d71b9fdbd0 100644
> > --- a/tools/lib/bpf/bpf.c
> > +++ b/tools/lib/bpf/bpf.c
> > @@ -26,6 +26,7 @@
> >  #include <linux/bpf.h>
> >  #include "bpf.h"
> >  #include "libbpf.h"
> > +#include "nlattr.h"
> >  #include <linux/rtnetlink.h>
> >  #include <sys/socket.h>
> >  #include <errno.h>
> > @@ -440,6 +441,7 @@ int bpf_set_link_xdp_fd(int ifindex, int fd,
> > __u32 flags)
> >  	struct nlmsghdr *nh;
> >  	struct nlmsgerr *err;
> >  	socklen_t addrlen;
> > +	int one;
> 
> Hmm, it's not initialized here to 1 ...
> 
> >  	memset(&sa, 0, sizeof(sa));
> >  	sa.nl_family = AF_NETLINK;
> > @@ -449,6 +451,11 @@ int bpf_set_link_xdp_fd(int ifindex, int fd,
> > __u32 flags)
> >  		return -errno;
> >  	}
> >  
> > +	if (setsockopt(sock, SOL_NETLINK, NETLINK_EXT_ACK,
> > +		       &one, sizeof(one)) < 0) {
> 
> ... so we turn it on by chance here.

Indeed, fixing that.

> > +		fprintf(stderr, "Netlink error reporting not
> > supported\n");
> > +	}
> > +
> >  	if (bind(sock, (struct sockaddr *)&sa, sizeof(sa)) < 0) {
> >  		ret = -errno;
> >  		goto cleanup;
> > @@ -524,7 +531,8 @@ int bpf_set_link_xdp_fd(int ifindex, int fd,
> > __u32 flags)
> >  			err = (struct nlmsgerr *)NLMSG_DATA(nh);
> >  			if (!err->error)
> >  				continue;
> > -			ret = err->error;
> > +			ret = -err->error;
> 
> This one looks strange. Your prior patch added the 'ret = err->error'
> and this one negates it. Which variant is the correct version? From
> digging into the kernel code, my take is that 'ret = err->error' was
> the correct variant since it already holds the negative error code.
> Could you double check?

Yes all netlink_ack usage I have seen are using the negative value of
the error. Fixing that too.

BR,
-- 
Eric Leblond <eric@regit.org>
Blog: https://home.regit.org/

  reply	other threads:[~2018-01-18 23:35 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-25 22:13 [PATCH bpf-next 0/3] add XDP loading support to libbpf Eric Leblond
2017-12-25 22:13 ` [PATCH bpf-next 1/3] libbpf: add function to setup XDP Eric Leblond
2017-12-25 22:13 ` [PATCH bpf-next 2/3] libbpf: add error reporting in XDP Eric Leblond
2017-12-27  2:27   ` Alexei Starovoitov
2017-12-27 18:02     ` [PATCH bpf-next v2 0/4] libbpf: add function to setup XDP Eric Leblond
2017-12-27 18:02       ` [PATCH 1/4] " Eric Leblond
2017-12-27 18:57         ` Alexei Starovoitov
2017-12-28  0:59         ` Toshiaki Makita
2017-12-27 18:02       ` [PATCH 2/4] libbpf: add error reporting in XDP Eric Leblond
2017-12-27 18:57         ` Alexei Starovoitov
2017-12-27 18:02       ` [PATCH 3/4] libbpf: break loop earlier Eric Leblond
2017-12-27 19:00         ` Alexei Starovoitov
2017-12-27 20:30           ` Eric Leblond
2017-12-27 23:05             ` Daniel Borkmann
2017-12-28  8:04               ` [PATCH bpf-next v3 0/3] libbpf: add XDP setup support Eric Leblond
2017-12-28  8:04                 ` [PATCH bpf-next v3 1/3] libbpf: add function to setup XDP Eric Leblond
2017-12-28  8:18                   ` Toshiaki Makita
2017-12-30 20:41                     ` [PATCH bpf-next v4 0/3] " Eric Leblond
2017-12-30 20:41                       ` [PATCH bpf-next v4 1/3] " Eric Leblond
2018-01-03 23:59                         ` Eric Leblond
2018-01-04  8:21                           ` [PATCH bpf-next v5 1/4] " Eric Leblond
2018-01-04  8:21                             ` [PATCH bpf-next v5 2/4] libbpf: add error reporting in XDP Eric Leblond
2018-01-06 21:16                               ` Daniel Borkmann
2018-01-18 23:35                                 ` Eric Leblond [this message]
2018-01-18 23:43                                   ` [PATCH bpf-next 0/4] libbpf: add XDP binding support Eric Leblond
2018-01-18 23:43                                     ` [PATCH bpf-next v6 1/4] libbpf: add function to setup XDP Eric Leblond
2018-01-18 23:43                                     ` [PATCH bpf-next v6 2/4] libbpf: add error reporting in XDP Eric Leblond
2018-01-18 23:43                                     ` [PATCH bpf-next v6 3/4] libbpf: add missing SPDX-License-Identifier Eric Leblond
2018-01-18 23:43                                     ` [PATCH bpf-next v6 4/4] samples/bpf: use bpf_set_link_xdp_fd Eric Leblond
2018-01-20  2:00                                     ` [PATCH bpf-next 0/4] libbpf: add XDP binding support Daniel Borkmann
2018-01-20  2:27                                       ` Alexei Starovoitov
2018-01-20  8:21                                         ` Daniel Borkmann
2018-01-25  0:05                                           ` [PATCH bpf-next v7 0/5] libbpf: add XDP setup support Eric Leblond
2018-01-25  0:05                                             ` [PATCH bpf-next v7 1/5] tools: import netlink header in tools uapi Eric Leblond
2018-01-25  0:05                                             ` [PATCH bpf-next v7 2/5] libbpf: add function to setup XDP Eric Leblond
2018-01-27  1:23                                               ` Daniel Borkmann
2018-01-27 10:22                                                 ` Eric Leblond
2018-01-25  0:05                                             ` [PATCH bpf-next v7 3/5] libbpf: add error reporting in XDP Eric Leblond
2018-01-27  1:28                                               ` Daniel Borkmann
2018-01-27 10:32                                                 ` Eric Leblond
2018-01-30 10:58                                                   ` Daniel Borkmann
2018-01-30 20:50                                                     ` [PATCH bpf-next v8 0/5] libbpf: add XDP binding support Eric Leblond
2018-01-31 16:53                                                       ` Daniel Borkmann
2018-02-03  2:01                                                         ` Alexei Starovoitov
2018-01-30 20:55                                                     ` [PATCH bpf-next v8 1/5] tools: add netlink.h and if_link.h in tools uapi Eric Leblond
2018-01-30 20:55                                                       ` [PATCH bpf-next v8 2/5] libbpf: add function to setup XDP Eric Leblond
2018-01-30 20:55                                                       ` [PATCH bpf-next v8 3/5] libbpf: add error reporting in XDP Eric Leblond
2018-01-30 20:55                                                       ` [PATCH bpf-next v8 4/5] libbpf: add missing SPDX-License-Identifier Eric Leblond
2018-01-30 20:55                                                       ` [PATCH bpf-next v8 5/5] samples/bpf: use bpf_set_link_xdp_fd Eric Leblond
2018-01-25  0:05                                             ` [PATCH bpf-next v7 4/5] libbpf: add missing SPDX-License-Identifier Eric Leblond
2018-01-25  0:05                                             ` [PATCH bpf-next v7 5/5] samples/bpf: use bpf_set_link_xdp_fd Eric Leblond
2018-01-04  8:21                             ` [PATCH bpf-next v5 3/4] libbpf: add missing SPDX-License-Identifier Eric Leblond
2018-01-04  9:49                               ` Philippe Ombredanne
2018-01-04  8:21                             ` [PATCH bpf-next v5 4/4] samples/bpf: use bpf_set_link_xdp_fd Eric Leblond
2017-12-30 20:41                       ` [PATCH bpf-next v4 2/3] libbpf: add error reporting in XDP Eric Leblond
2017-12-31 11:20                         ` Philippe Ombredanne
2017-12-30 20:41                       ` [PATCH bpf-next v4 3/3] libbpf: add missing SPDX-License-Identifier Eric Leblond
2017-12-28  8:04                 ` [PATCH bpf-next v3 2/3] libbpf: add error reporting in XDP Eric Leblond
2017-12-28  8:04                 ` [PATCH bpf-next v3 3/3] libbpf: add missing SPDX-License-Identifier Eric Leblond
2017-12-29 12:35                   ` Philippe Ombredanne
2017-12-27 18:02       ` [PATCH 4/4] " Eric Leblond
2017-12-27 19:01         ` Alexei Starovoitov
2017-12-25 22:13 ` [PATCH bpf-next 3/3] libbpf: break loop earlier Eric Leblond

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=1516318537.24936.7.camel@regit.org \
    --to=eric@regit.org \
    --cc=alexei.starovoitov@gmail.com \
    --cc=daniel@iogearbox.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=makita.toshiaki@lab.ntt.co.jp \
    --cc=netdev@vger.kernel.org \
    --cc=pombredanne@nexb.com \
    --cc=tgraf@suug.ch \
    /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.