aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/net/ethtool/ioctl.c
diff options
context:
space:
mode:
authorGal Pressman <gal@nvidia.com>2025-01-26 21:18:45 +0200
committerPaolo Abeni <pabeni@redhat.com>2025-01-28 12:25:42 +0100
commit4f5a52adeb1ad675ca33f1e1eacd9c0bbaf393d4 (patch)
tree0c99a8c75eb122dcb7908d1f55148cabaf8ad61c /net/ethtool/ioctl.c
parentMerge branch 'usbnet-ipheth-prevent-oob-reads-of-ndp16' (diff)
downloadwireguard-linux-4f5a52adeb1ad675ca33f1e1eacd9c0bbaf393d4.tar.xz
wireguard-linux-4f5a52adeb1ad675ca33f1e1eacd9c0bbaf393d4.zip
ethtool: Fix set RXNFC command with symmetric RSS hash
The sanity check that both source and destination are set when symmetric RSS hash is requested is only relevant for ETHTOOL_SRXFH (rx-flow-hash), it should not be performed on any other commands (e.g. ETHTOOL_SRXCLSRLINS/ETHTOOL_SRXCLSRLDEL). This resolves accessing uninitialized 'info.data' field, and fixes false errors in rule insertion: # ethtool --config-ntuple eth2 flow-type ip4 dst-ip 255.255.255.255 action -1 loc 0 rmgr: Cannot insert RX class rule: Invalid argument Cannot insert classification rule Fixes: 13e59344fb9d ("net: ethtool: add support for symmetric-xor RSS hash") Cc: Ahmed Zaki <ahmed.zaki@intel.com> Reviewed-by: Tariq Toukan <tariqt@nvidia.com> Signed-off-by: Gal Pressman <gal@nvidia.com> Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com> Reviewed-by: Edward Cree <ecree.xilinx@gmail.com> Reviewed-by: Ahmed Zaki <ahmed.zaki@intel.com> Link: https://patch.msgid.link/20250126191845.316589-1-gal@nvidia.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Diffstat (limited to '')
-rw-r--r--net/ethtool/ioctl.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ethtool/ioctl.c b/net/ethtool/ioctl.c
index 7bb94875a7ec..34bee42e1247 100644
--- a/net/ethtool/ioctl.c
+++ b/net/ethtool/ioctl.c
@@ -998,7 +998,7 @@ static noinline_for_stack int ethtool_set_rxnfc(struct net_device *dev,
ethtool_get_flow_spec_ring(info.fs.ring_cookie))
return -EINVAL;
- if (ops->get_rxfh) {
+ if (cmd == ETHTOOL_SRXFH && ops->get_rxfh) {
struct ethtool_rxfh_param rxfh = {};
rc = ops->get_rxfh(dev, &rxfh);