On 9/19/18 5:08 AM, Johannes Berg wrote: > From: Johannes Berg <johannes.berg@xxxxxxxxx> > > In nla_parse() we already set this, but it makes sense to > also do it in nla_validate() which already also sets the > bad attribute pointer. > > CC: David Ahern <dsahern@xxxxxxxxx> > Signed-off-by: Johannes Berg <johannes.berg@xxxxxxxxx> > --- > lib/nlattr.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/lib/nlattr.c b/lib/nlattr.c > index e2e5b38394d5..33404745bec4 100644 > --- a/lib/nlattr.c > +++ b/lib/nlattr.c > @@ -180,9 +180,13 @@ int nla_validate(const struct nlattr *head, int len, int maxtype, > int rem; > > nla_for_each_attr(nla, head, len, rem) { > - int err = validate_nla(nla, maxtype, policy, NULL); > + static const char _msg[] = "Attribute failed policy validation"; > + const char *msg = _msg; > + int err = validate_nla(nla, maxtype, policy, &msg); > > if (err < 0) { > + if (extack) > + extack->_msg = msg; > NL_SET_BAD_ATTR(extack, nla); msg, NL_SET_BAD_ATTR and extack handling all can be done in validate_nla removing the need for the same message ("Attribute failed policy validation") to be declared twice and simplifying the extack setting. > return err; > } >