Patch "net/mlx5e: IPoIB, Block PKEY interfaces with less rx queues than parent" has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    net/mlx5e: IPoIB, Block PKEY interfaces with less rx queues than parent

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     net-mlx5e-ipoib-block-pkey-interfaces-with-less-rx-q.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit a757108b4054a61a454edfe05143d23eaccd3fa0
Author: Dragos Tatulea <dtatulea@xxxxxxxxxx>
Date:   Fri Nov 25 17:51:19 2022 +0200

    net/mlx5e: IPoIB, Block PKEY interfaces with less rx queues than parent
    
    [ Upstream commit 31c70bfe58ef09fe36327ddcced9143a16e9e83d ]
    
    A user is able to configure an arbitrary number of rx queues when
    creating an interface via netlink. This doesn't work for child PKEY
    interfaces because the child interface uses the parent receive channels.
    
    Although the child shares the parent's receive channels, the number of
    rx queues is important for the channel_stats array: the parent's rx
    channel index is used to access the child's channel_stats. So the array
    has to be at least as large as the parent's rx queue size for the
    counting to work correctly and to prevent out of bound accesses.
    
    This patch checks for the mentioned scenario and returns an error when
    trying to create the interface. The error is propagated to the user.
    
    Fixes: be98737a4faa ("net/mlx5e: Use dynamic per-channel allocations in stats")
    Signed-off-by: Dragos Tatulea <dtatulea@xxxxxxxxxx>
    Reviewed-by: Tariq Toukan <tariqt@xxxxxxxxxx>
    Signed-off-by: Saeed Mahameed <saeedm@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib_vlan.c b/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib_vlan.c
index 3d31c59e69d4..0cf4eaf852d2 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib_vlan.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib_vlan.c
@@ -168,6 +168,15 @@ static int mlx5i_pkey_dev_init(struct net_device *dev)
 		return -EINVAL;
 	}
 
+	if (dev->num_rx_queues < parent_dev->real_num_rx_queues) {
+		mlx5_core_warn(priv->mdev,
+			       "failed to create child device with rx queues [%d] less than parent's [%d]\n",
+			       dev->num_rx_queues,
+			       parent_dev->real_num_rx_queues);
+		mlx5i_parent_put(dev);
+		return -EINVAL;
+	}
+
 	/* Get QPN to netdevice hash table from parent */
 	parent_ipriv = netdev_priv(parent_dev);
 	ipriv->qpn_htbl = parent_ipriv->qpn_htbl;



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux