summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYevgeny Petrilin <yevgenyp@mellanox.co.il>2009-04-20 04:24:28 +0000
committerDavid S. Miller <davem@davemloft.net>2009-04-21 01:47:03 -0700
commit9a4f92a603cd72ee534cead20cbc627b34cfc884 (patch)
tree12acfcdca721ebbacf3b9f75cbb425f8fee7576e
parent775d8d931581764a1ec982ebe5a927b12762fb6d (diff)
downloadlinux-9a4f92a603cd72ee534cead20cbc627b34cfc884.tar.gz
linux-9a4f92a603cd72ee534cead20cbc627b34cfc884.tar.bz2
linux-9a4f92a603cd72ee534cead20cbc627b34cfc884.zip
mlx4_en: Fix error handling while activating RX rings
In case of failure of either srq creation or page allocation, the cleanup code handled the failed ring as well, and tried to destroy resources that where not allocated. Signed-off-by: Yevgeny Petrilin <yevgenyp@mellanox.co.il> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/mlx4/en_rx.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/mlx4/en_rx.c b/drivers/net/mlx4/en_rx.c
index 7e40741fb7d8..8673008f72df 100644
--- a/drivers/net/mlx4/en_rx.c
+++ b/drivers/net/mlx4/en_rx.c
@@ -436,8 +436,9 @@ int mlx4_en_activate_rx_rings(struct mlx4_en_priv *priv)
/* Initialize page allocators */
err = mlx4_en_init_allocator(priv, ring);
if (err) {
- mlx4_err(mdev, "Failed initializing ring allocator\n");
- goto err_allocator;
+ mlx4_err(mdev, "Failed initializing ring allocator\n");
+ ring_ind--;
+ goto err_allocator;
}
/* Fill Rx buffers */
@@ -467,6 +468,7 @@ int mlx4_en_activate_rx_rings(struct mlx4_en_priv *priv)
ring->wqres.db.dma, &ring->srq);
if (err){
mlx4_err(mdev, "Failed to allocate srq\n");
+ ring_ind--;
goto err_srq;
}
ring->srq.event = mlx4_en_srq_event;