]> git.baikalelectronics.ru Git - kernel.git/commit
ethtool: strset: fix message length calculation
authorJakub Kicinski <kuba@kernel.org>
Sat, 12 Jun 2021 01:49:48 +0000 (18:49 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 14 Jun 2021 19:14:24 +0000 (12:14 -0700)
commitd7dad91b26113f49328ef3315c837e8fab08f59e
treee3e0beddfdf7e8bd76cab96807a83e5e5d57f30f
parente3c19a6cc9014e93fb97b8877e9101cf21c13b8b
ethtool: strset: fix message length calculation

Outer nest for ETHTOOL_A_STRSET_STRINGSETS is not accounted for.
This may result in ETHTOOL_MSG_STRSET_GET producing a warning like:

    calculated message payload length (684) not sufficient
    WARNING: CPU: 0 PID: 30967 at net/ethtool/netlink.c:369 ethnl_default_doit+0x87a/0xa20

and a splat.

As usually with such warnings three conditions must be met for the warning
to trigger:
 - there must be no skb size rounding up (e.g. reply_size of 684);
 - string set must be per-device (so that the header gets populated);
 - the device name must be at least 12 characters long.

all in all with current user space it looks like reading priv flags
is the only place this could potentially happen. Or with syzbot :)

Reported-by: syzbot+59aa77b92d06cd5a54f2@syzkaller.appspotmail.com
Fixes: 1122a1558105 ("ethtool: provide string sets with STRSET_GET request")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ethtool/strset.c