On Fri, Aug 18, 2017 at 09:21:34AM +0000, David Laight wrote: > From: Phil Sutter > > Sent: 17 August 2017 18:10 > > Signed-off-by: Phil Sutter <p...@nwl.cc> > > --- > > ip/iproute_lwtunnel.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/ip/iproute_lwtunnel.c b/ip/iproute_lwtunnel.c > > index 398ab5e077ed8..1a3dc4d4c0ed9 100644 > > --- a/ip/iproute_lwtunnel.c > > +++ b/ip/iproute_lwtunnel.c > > @@ -643,7 +643,7 @@ static int lwt_parse_bpf(struct rtattr *rta, size_t len, > > err = bpf_parse_common(bpf_type, &cfg, &bpf_cb_ops, &x); > > if (err < 0) { > > fprintf(stderr, "Failed to parse eBPF program: %s\n", > > - strerror(err)); > > + strerror(-err)); > > If we are in userspace I'd expect errno values to be +ve. > Returning a -ve errno is very non-standard.
This is because bpf_parse() returns the number of instructions parsed or a negative return code. We could change it to return instructions * -1 or a positive return code, but that's even more insane than calling strerror(-err), isn't it? Cheers, Phil