On Wed, 2020-10-07 at 11:24 +0300, Leon Romanovsky wrote:
> On Wed, Oct 07, 2020 at 09:30:51AM +0200, Johannes Berg wrote:
> > On Wed, 2020-10-07 at 09:27 +0300, Leon Romanovsky wrote:
> > > This series and my guess that it comes from ff419afa4310 ("ethtool: trim
> > > policy tables")
> > > generates the following KASAN out-of-bound error.
> >
> > Interesting. I guess that is
> >
> > req_info->counts_only = tb[ETHTOOL_A_STRSET_COUNTS_ONLY];
> >
> > which basically means that before you never actually *use* the
> > ETHTOOL_A_STRSET_COUNTS_ONLY flag, but of course it shouldn't be doing
> > this ...
> >
> > Does this fix it?
>
> Yes, it fixed KASAN, but it we got new failure after that.
Good.
I'm not very familiar with ethtool netlink tbh :)
> 11:07:51 player_id: 1 shell.py:62 [LinuxEthtoolAgent] DEBUG : running
> command(/opt/mellanox/ethtool/sbin/ethtool --set-channels eth2 combined 3)
> with pid: 13409
> 11:07:51 player_id: 1 protocol.py:605 [OpSetChannels] ERROR : RC:1, STDERR:
> netlink error: Unknown attribute type (offset 36)
> netlink error: Invalid argument
That's even stranger, since strict validation should've meant this was
always rejected? Hmm.
Oh, copy/paste error I guess, try this:
diff --git a/net/ethtool/netlink.c b/net/ethtool/netlink.c
index 8a85a4e6be9b..50d3c8896f91 100644
--- a/net/ethtool/netlink.c
+++ b/net/ethtool/netlink.c
@@ -830,8 +830,8 @@ static const struct genl_ops ethtool_genl_ops[] = {
.cmd = ETHTOOL_MSG_CHANNELS_SET,
.flags = GENL_UNS_ADMIN_PERM,
.doit = ethnl_set_channels,
- .policy = ethnl_channels_get_policy,
- .maxattr = ARRAY_SIZE(ethnl_channels_get_policy) - 1,
+ .policy = ethnl_channels_set_policy,
+ .maxattr = ARRAY_SIZE(ethnl_channels_set_policy) - 1,
},
{
.cmd = ETHTOOL_MSG_COALESCE_GET,
johannes