]> www.infradead.org Git - users/hch/misc.git/commitdiff
net: ethtool: pass the num of RX rings directly to ethtool_copy_validate_indir
authorBreno Leitao <leitao@debian.org>
Wed, 17 Sep 2025 09:58:08 +0000 (02:58 -0700)
committerJakub Kicinski <kuba@kernel.org>
Thu, 18 Sep 2025 14:07:36 +0000 (07:07 -0700)
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: Breno Leitao <leitao@debian.org>
Link: https://patch.msgid.link/20250917-gxrings-v4-1-dae520e2e1cb@debian.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ethtool/ioctl.c

index 0b2a4d0573b3899bb6054dd465663c0ac1d75eb0..15627afa4424fce4a015225e4c378f6b731c5946 100644 (file)
@@ -1246,8 +1246,8 @@ err_out:
 }
 
 static int ethtool_copy_validate_indir(u32 *indir, void __user *useraddr,
-                                       struct ethtool_rxnfc *rx_rings,
-                                       u32 size)
+                                      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;