summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorMichael Chan2009-08-21 18:20:45 +0200
committerDavid S. Miller2009-08-23 02:48:47 +0200
commit6fefb65e78f098c09d0ab877b2c70421e4c84116 (patch)
tree2b85b62679ee60f56fed3e86f96a91a33cbb25dd /drivers
parentbnx2: Check if_running() before touching chip registers. (diff)
downloadkernel-qcow2-linux-6fefb65e78f098c09d0ab877b2c70421e4c84116.tar.gz
kernel-qcow2-linux-6fefb65e78f098c09d0ab877b2c70421e4c84116.tar.xz
kernel-qcow2-linux-6fefb65e78f098c09d0ab877b2c70421e4c84116.zip
bnx2: Close device if MTU change or ring size change fails.
When unable to allocate memory for new MTU or new ring size, we need to close the device to prevent it from crashing. Signed-off-by: Michael Chan <mchan@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/bnx2.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
index 9cfd46017e4e..1d502e6f6c9c 100644
--- a/drivers/net/bnx2.c
+++ b/drivers/net/bnx2.c
@@ -6992,9 +6992,14 @@ bnx2_change_ring_size(struct bnx2 *bp, u32 rx, u32 tx)
int rc;
rc = bnx2_alloc_mem(bp);
- if (rc)
+ if (!rc)
+ rc = bnx2_init_nic(bp, 0);
+
+ if (rc) {
+ bnx2_napi_enable(bp);
+ dev_close(bp->dev);
return rc;
- bnx2_init_nic(bp, 0);
+ }
bnx2_netif_start(bp);
}
return 0;