Commit 1a44cc3778f63dca5795708da2a2a7696da7fd61

Authored by Roland Dreier
Committed by David S. Miller
1 parent b1b243afac

mlx4_en: Fix cleanup if workqueue create in mlx4_en_add() fails

If creating a workqueue fails, don't jump to the error path where that
same workqueue is destroyed, since destroy_workqueue() can't handle a
NULL pointer.

This was spotted by the Coverity checker (CID 2617).

Signed-off-by: Roland Dreier <rolandd@cisco.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

Showing 1 changed file with 2 additions and 3 deletions Side-by-side Diff

drivers/net/mlx4/en_main.c
... ... @@ -181,7 +181,7 @@
181 181 mdev->workqueue = create_singlethread_workqueue("mlx4_en");
182 182 if (!mdev->workqueue) {
183 183 err = -ENOMEM;
184   - goto err_close_nic;
  184 + goto err_mr;
185 185 }
186 186  
187 187 /* At this stage all non-port specific tasks are complete:
188 188  
... ... @@ -214,9 +214,8 @@
214 214 flush_workqueue(mdev->workqueue);
215 215  
216 216 /* Stop event queue before we drop down to release shared SW state */
217   -
218   -err_close_nic:
219 217 destroy_workqueue(mdev->workqueue);
  218 +
220 219 err_mr:
221 220 mlx4_mr_free(dev, &mdev->mr);
222 221 err_uar: