On Sat, May 10, 2025 at 11:16 AM Anton Protopopov <a.s.protopopov@xxxxxxxxx> wrote: > > Return value of the validate_nla() function can be propagated all the > way up to users of libbpf API. In case of error this libbpf version > of validate_nla returns -1 which will be seen as -EPERM from user's > point of view. Instead, return a more reasonable -EINVAL. > > Fixes: bbf48c18ee0c ("libbpf: add error reporting in XDP") > Suggested-by: Andrii Nakryiko <andrii@xxxxxxxxxx> > Signed-off-by: Anton Protopopov <a.s.protopopov@xxxxxxxxx> > --- > tools/lib/bpf/nlattr.c | 12 +++++------- > 1 file changed, 5 insertions(+), 7 deletions(-) > Thanks for the clean up fix! Applied to bpf-next. > diff --git a/tools/lib/bpf/nlattr.c b/tools/lib/bpf/nlattr.c > index 975e265eab3b..0ba527d33ce4 100644 > --- a/tools/lib/bpf/nlattr.c > +++ b/tools/lib/bpf/nlattr.c > @@ -63,16 +63,16 @@ static int validate_nla(struct nlattr *nla, int maxtype, > minlen = nla_attr_minlen[pt->type]; > > if (libbpf_nla_len(nla) < minlen) > - return -1; > + return -EINVAL; > > if (pt->maxlen && libbpf_nla_len(nla) > pt->maxlen) > - return -1; > + return -EINVAL; > > if (pt->type == LIBBPF_NLA_STRING) { > char *data = libbpf_nla_data(nla); > > if (data[libbpf_nla_len(nla) - 1] != '\0') > - return -1; > + return -EINVAL; > } > > return 0; > @@ -118,7 +118,7 @@ int libbpf_nla_parse(struct nlattr *tb[], int maxtype, struct nlattr *head, > if (policy) { > err = validate_nla(nla, maxtype, policy); > if (err < 0) > - goto errout; > + return err; > } > > if (tb[type]) > @@ -128,9 +128,7 @@ int libbpf_nla_parse(struct nlattr *tb[], int maxtype, struct nlattr *head, > tb[type] = nla; > } > > - err = 0; > -errout: > - return err; > + return 0; > } > > /** > -- > 2.34.1 >