summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/mellanox
diff options
context:
space:
mode:
authorEugenia Emantayev2013-01-24 02:54:14 +0100
committerDavid S. Miller2013-01-28 06:13:56 +0100
commit2d51837fa1ee7ff5c42f34b07dc460daff6afda1 (patch)
tree6b70bd8aaf3d6098ce7eca54407a886f586c4775 /drivers/net/ethernet/mellanox
parentgro: Fix kcalloc argument order (diff)
downloadkernel-qcow2-linux-2d51837fa1ee7ff5c42f34b07dc460daff6afda1.tar.gz
kernel-qcow2-linux-2d51837fa1ee7ff5c42f34b07dc460daff6afda1.tar.xz
kernel-qcow2-linux-2d51837fa1ee7ff5c42f34b07dc460daff6afda1.zip
net/mlx4_en: Issue the dump eth statistics command under lock
Performing the DUMP_ETH_STATS firmware command outside the lock leads to kernel panic when data structures such as RX/TX rings are freed in parallel, e.g when one changes the mtu or ring sizes. Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com> Signed-off-by: Amir Vadai <amirv@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/mellanox')
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/en_netdev.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
index b4675138533a..b6c645fc6c48 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
@@ -977,12 +977,12 @@ static void mlx4_en_do_get_stats(struct work_struct *work)
struct mlx4_en_dev *mdev = priv->mdev;
int err;
- err = mlx4_en_DUMP_ETH_STATS(mdev, priv->port, 0);
- if (err)
- en_dbg(HW, priv, "Could not update stats\n");
-
mutex_lock(&mdev->state_lock);
if (mdev->device_up) {
+ err = mlx4_en_DUMP_ETH_STATS(mdev, priv->port, 0);
+ if (err)
+ en_dbg(HW, priv, "Could not update stats\n");
+
if (priv->port_up)
mlx4_en_auto_moderation(priv);