[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20201005192857.2pvd6oj3nzps6n2y@lion.mk-sys.cz>
Date: Mon, 5 Oct 2020 21:28:57 +0200
From: Michal Kubecek <mkubecek@...e.cz>
To: Johannes Berg <johannes@...solutions.net>
Cc: Jakub Kicinski <kuba@...nel.org>, davem@...emloft.net,
netdev@...r.kernel.org, kernel-team@...com, jiri@...nulli.us,
andrew@...n.ch, dsahern@...il.com, pablo@...filter.org
Subject: Re: [PATCH net-next 5/6] netlink: add mask validation
On Mon, Oct 05, 2020 at 09:05:23PM +0200, Johannes Berg wrote:
> On Mon, 2020-10-05 at 08:57 -0700, Jakub Kicinski wrote:
>
> > +static int nla_validate_mask(const struct nla_policy *pt,
> > + const struct nlattr *nla,
> > + struct netlink_ext_ack *extack)
> > +{
> > + u64 value;
> > +
> > + switch (pt->type) {
> > + case NLA_U8:
> > + value = nla_get_u8(nla);
> > + break;
> > + case NLA_U16:
> > + value = nla_get_u16(nla);
> > + break;
> > + case NLA_U32:
> > + value = nla_get_u32(nla);
> > + break;
> > + case NLA_U64:
> > + value = nla_get_u64(nla);
> > + break;
> > + default:
> > + return -EINVAL;
> > + }
> > +
> > + if (value & ~(u64)pt->mask) {
> > + NL_SET_ERR_MSG_ATTR(extack, nla, "reserved bit set");
> > + return -EINVAL;
>
> You had an export of the valid bits there in ethtool, using the cookie.
> Just pointing out you lost it now. I'm not sure I like using the cookie,
> that seems a bit strange, but we could easily define a different attr?
The idea behind the cookie was that if new userspace sends a request
with multiple flags which may not be supported by an old kernel, getting
only -EOPNOTSUPP (and badattr pointing to the flags) would not be very
helpful as multiple iteration would be necessary to find out which flags
are supported and which not.
> OTOH, one can always query the policy export too (which hopefully got
> wired up) so it wouldn't really matter much.
But yes, if userspace can get supported flags from policy dump, it can
check them in advance and either bail out (if one of essential flags is
unsupported) or send only supported flags.
I'm not exactly happy with the prospect of having to do a full policy
dump before each such request, thought.
Michal
Powered by blists - more mailing lists