Commit 3efaede2 authored by Breno Leitao's avatar Breno Leitao Committed by Jakub Kicinski
Browse files

net: ethtool: pass the num of RX rings directly to ethtool_copy_validate_indir



Modify ethtool_copy_validate_indir() and callers to validate indirection
table entries against the number of RX rings as an integer instead of
accessing rx_rings->data.

This will be useful in the future, given that struct ethtool_rxnfc might
not exist for native GRXRINGS call.

Signed-off-by: default avatarBreno Leitao <leitao@debian.org>
Link: https://patch.msgid.link/20250917-gxrings-v4-1-dae520e2e1cb@debian.org


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 672beab0
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -1246,7 +1246,7 @@ static noinline_for_stack int ethtool_get_rxnfc(struct net_device *dev,
}

static int ethtool_copy_validate_indir(u32 *indir, void __user *useraddr,
					struct ethtool_rxnfc *rx_rings,
				       int num_rx_rings,
				       u32 size)
{
	int i;
@@ -1256,7 +1256,7 @@ static int ethtool_copy_validate_indir(u32 *indir, void __user *useraddr,

	/* Validate ring indices */
	for (i = 0; i < size; i++)
		if (indir[i] >= rx_rings->data)
		if (indir[i] >= num_rx_rings)
			return -EINVAL;

	return 0;
@@ -1366,7 +1366,7 @@ static noinline_for_stack int ethtool_set_rxfh_indir(struct net_device *dev,
	} else {
		ret = ethtool_copy_validate_indir(rxfh_dev.indir,
						  useraddr + ringidx_offset,
						  &rx_rings,
						  rx_rings.data,
						  rxfh_dev.indir_size);
		if (ret)
			goto out;
@@ -1587,7 +1587,7 @@ static noinline_for_stack int ethtool_set_rxfh(struct net_device *dev,
		rxfh_dev.indir_size = dev_indir_size;
		ret = ethtool_copy_validate_indir(rxfh_dev.indir,
						  useraddr + rss_cfg_offset,
						  &rx_rings,
						  rx_rings.data,
						  rxfh.indir_size);
		if (ret)
			goto out_free;