• Daniil Tatianin's avatar
    net/ethtool/ioctl: split ethtool_get_phy_stats into multiple helpers · 201ed315
    Daniil Tatianin authored
    So that it's easier to follow and make sense of the branching and
    various conditions.
    
    Stats retrieval has been split into two separate functions
    ethtool_get_phy_stats_phydev & ethtool_get_phy_stats_ethtool.
    The former attempts to retrieve the stats using phydev & phy_ops, while
    the latter uses ethtool_ops.
    
    Actual n_stats validation & array allocation has been moved into a new
    ethtool_vzalloc_stats_array helper.
    
    This also fixes a potential NULL dereference of
    ops->get_ethtool_phy_stats where it was getting called in an else branch
    unconditionally without making sure it was actually present.
    
    Found by Linux Verification Center (linuxtesting.org) with the SVACE
    static analysis tool.
    Signed-off-by: default avatarDaniil Tatianin <d-tatianin@yandex-team.ru>
    Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    201ed315
ioctl.c 85.9 KB