lkml.org 
[lkml]   [2021]   [Jun]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 048/146] ethtool: strset: fix message length calculation
    Date
    From: Jakub Kicinski <kuba@kernel.org>

    [ Upstream commit e175aef902697826d344ce3a12189329848fe898 ]

    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: 71921690f974 ("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>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/ethtool/strset.c | 2 ++
    1 file changed, 2 insertions(+)

    diff --git a/net/ethtool/strset.c b/net/ethtool/strset.c
    index c3a5489964cd..9908b922cce8 100644
    --- a/net/ethtool/strset.c
    +++ b/net/ethtool/strset.c
    @@ -328,6 +328,8 @@ static int strset_reply_size(const struct ethnl_req_info *req_base,
    int len = 0;
    int ret;

    + len += nla_total_size(0); /* ETHTOOL_A_STRSET_STRINGSETS */
    +
    for (i = 0; i < ETH_SS_COUNT; i++) {
    const struct strset_info *set_info = &data->sets[i];

    --
    2.30.2


    \
     
     \ /
      Last update: 2021-06-21 18:30    [W:2.691 / U:0.636 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site