]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ethtool: Fix access to uninitialized fields in set RXNFC command
authorGal Pressman <gal@nvidia.com>
Mon, 2 Dec 2024 16:48:05 +0000 (18:48 +0200)
committerJakub Kicinski <kuba@kernel.org>
Wed, 4 Dec 2024 02:42:28 +0000 (18:42 -0800)
The check for non-zero ring with RSS is only relevant for
ETHTOOL_SRXCLSRLINS command, in other cases the check tries to access
memory which was not initialized by the userspace tool. Only perform the
check in case of ETHTOOL_SRXCLSRLINS.

Without this patch, filter deletion (for example) could statistically
result in a false error:
  # ethtool --config-ntuple eth3 delete 484
  rmgr: Cannot delete RX class rule: Invalid argument
  Cannot delete classification rule

Fixes: 9e43ad7a1ede ("net: ethtool: only allow set_rxnfc with rss + ring_cookie if driver opts in")
Link: https://lore.kernel.org/netdev/871a9ecf-1e14-40dd-bbd7-e90c92f89d47@nvidia.com/
Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com>
Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
Signed-off-by: Gal Pressman <gal@nvidia.com>
Reviewed-by: Edward Cree <ecree.xilinx@gmail.com>
Link: https://patch.msgid.link/20241202164805.1637093-1-gal@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ethtool/ioctl.c

index 61df8ce44379de8ba54c9818eec6c35c7fe80a48..7bb94875a7ec87b3e2d882cb5df2416b9fad9d9d 100644 (file)
@@ -993,7 +993,8 @@ static noinline_for_stack int ethtool_set_rxnfc(struct net_device *dev,
                return rc;
 
        /* Nonzero ring with RSS only makes sense if NIC adds them together */
-       if (info.flow_type & FLOW_RSS && !ops->cap_rss_rxnfc_adds &&
+       if (cmd == ETHTOOL_SRXCLSRLINS && info.flow_type & FLOW_RSS &&
+           !ops->cap_rss_rxnfc_adds &&
            ethtool_get_flow_spec_ring(info.fs.ring_cookie))
                return -EINVAL;