* [PATCH net-next 1/4] cnic: Fix occasional NULL pointer dereference during reboot.
@ 2012-06-28 1:08 Michael Chan
2012-06-28 1:08 ` [PATCH net-next 2/4] cnic: Read bnx2x function number from internal register Michael Chan
2012-06-28 4:28 ` [PATCH net-next 1/4] cnic: Fix occasional NULL pointer dereference during reboot David Miller
0 siblings, 2 replies; 12+ messages in thread
From: Michael Chan @ 2012-06-28 1:08 UTC (permalink / raw)
To: davem; +Cc: netdev
We register with bnx2x before we allocate ctx_tbl structure, so it is
possible for bnx2x to call cnic_ctl before the structure is allocated.
This can sometimes cause NULL pointer dereference of cp->ctx_tbl. We
fix this by adding simple checking for valid state before proceeding.
The cnic_ctl call is RCU protected so we don't have to deal with race
conditions.
Because of the additional checking, we need to finish the shutdown
before clearing the CNIC_UP flag.
Signed-off-by: Michael Chan <mchan@broadcom.com>
---
drivers/net/ethernet/broadcom/cnic.c | 9 +++++++--
1 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/cnic.c b/drivers/net/ethernet/broadcom/cnic.c
index 0e9be2b..31b05ad 100644
--- a/drivers/net/ethernet/broadcom/cnic.c
+++ b/drivers/net/ethernet/broadcom/cnic.c
@@ -291,6 +291,9 @@ static int cnic_get_l5_cid(struct cnic_local *cp, u32 cid, u32 *l5_cid)
{
u32 i;
+ if (!cp->ctx_tbl)
+ return -EINVAL;
+
for (i = 0; i < cp->max_cid_space; i++) {
if (cp->ctx_tbl[i].cid == cid) {
*l5_cid = i;
@@ -3220,6 +3223,9 @@ static int cnic_ctl(void *data, struct cnic_ctl_info *info)
u32 l5_cid;
struct cnic_local *cp = dev->cnic_priv;
+ if (!test_bit(CNIC_F_CNIC_UP, &dev->flags))
+ break;
+
if (cnic_get_l5_cid(cp, cid, &l5_cid) == 0) {
struct cnic_context *ctx = &cp->ctx_tbl[l5_cid];
@@ -4253,8 +4259,6 @@ static int cnic_cm_shutdown(struct cnic_dev *dev)
struct cnic_local *cp = dev->cnic_priv;
int i;
- cp->stop_cm(dev);
-
if (!cp->csk_tbl)
return 0;
@@ -5290,6 +5294,7 @@ static void cnic_stop_hw(struct cnic_dev *dev)
i++;
}
cnic_shutdown_rings(dev);
+ cp->stop_cm(dev);
clear_bit(CNIC_F_CNIC_UP, &dev->flags);
RCU_INIT_POINTER(cp->ulp_ops[CNIC_ULP_L4], NULL);
synchronize_rcu();
--
1.7.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH net-next 2/4] cnic: Read bnx2x function number from internal register
2012-06-28 1:08 [PATCH net-next 1/4] cnic: Fix occasional NULL pointer dereference during reboot Michael Chan
@ 2012-06-28 1:08 ` Michael Chan
2012-06-28 1:08 ` [PATCH net-next 3/4] cnic: Remove uio mem[0] Michael Chan
2012-06-28 4:28 ` [PATCH net-next 2/4] cnic: Read bnx2x function number from internal register David Miller
2012-06-28 4:28 ` [PATCH net-next 1/4] cnic: Fix occasional NULL pointer dereference during reboot David Miller
1 sibling, 2 replies; 12+ messages in thread
From: Michael Chan @ 2012-06-28 1:08 UTC (permalink / raw)
To: davem; +Cc: netdev
From: Eddie Wai <eddie.wai@broadcom.com>
so that it will work on any hypervisor.
Signed-off-by: Eddie Wai <eddie.wai@broadcom.com>
Signed-off-by: Michael Chan <mchan@broadcom.com>
---
drivers/net/ethernet/broadcom/cnic.c | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/cnic.c b/drivers/net/ethernet/broadcom/cnic.c
index 31b05ad..5980443 100644
--- a/drivers/net/ethernet/broadcom/cnic.c
+++ b/drivers/net/ethernet/broadcom/cnic.c
@@ -4988,8 +4988,14 @@ static int cnic_start_bnx2x_hw(struct cnic_dev *dev)
cp->port_mode = CHIP_PORT_MODE_NONE;
if (BNX2X_CHIP_IS_E2_PLUS(cp->chip_id)) {
- u32 val = CNIC_RD(dev, MISC_REG_PORT4MODE_EN_OVWR);
+ u32 val;
+
+ pci_read_config_dword(dev->pcidev, PCICFG_ME_REGISTER, &val);
+ cp->func = (u8) ((val & ME_REG_ABS_PF_NUM) >>
+ ME_REG_ABS_PF_NUM_SHIFT);
+ func = CNIC_FUNC(cp);
+ val = CNIC_RD(dev, MISC_REG_PORT4MODE_EN_OVWR);
if (!(val & 1))
val = CNIC_RD(dev, MISC_REG_PORT4MODE_EN);
else
--
1.7.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH net-next 3/4] cnic: Remove uio mem[0].
2012-06-28 1:08 ` [PATCH net-next 2/4] cnic: Read bnx2x function number from internal register Michael Chan
@ 2012-06-28 1:08 ` Michael Chan
2012-06-28 1:08 ` [PATCH net-next 4/4] cnic: Handle RAMROD_CMD_ID_CLOSE error Michael Chan
2012-06-28 4:29 ` [PATCH net-next 3/4] cnic: Remove uio mem[0] David Miller
2012-06-28 4:28 ` [PATCH net-next 2/4] cnic: Read bnx2x function number from internal register David Miller
1 sibling, 2 replies; 12+ messages in thread
From: Michael Chan @ 2012-06-28 1:08 UTC (permalink / raw)
To: davem; +Cc: netdev
This memory region is no longer used. Userspace gets the BAR address
directly from sysfs.
Signed-off-by: Michael Chan <mchan@broadcom.com>
---
drivers/net/ethernet/broadcom/cnic.c | 5 +----
1 files changed, 1 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/cnic.c b/drivers/net/ethernet/broadcom/cnic.c
index 5980443..ec43df1 100644
--- a/drivers/net/ethernet/broadcom/cnic.c
+++ b/drivers/net/ethernet/broadcom/cnic.c
@@ -1063,10 +1063,7 @@ static int cnic_init_uio(struct cnic_dev *dev)
uinfo = &udev->cnic_uinfo;
- uinfo->mem[0].addr = dev->netdev->base_addr;
- uinfo->mem[0].internal_addr = dev->regview;
- uinfo->mem[0].size = dev->netdev->mem_end - dev->netdev->mem_start;
- uinfo->mem[0].memtype = UIO_MEM_PHYS;
+ uinfo->mem[0].memtype = UIO_MEM_NONE;
if (test_bit(CNIC_F_BNX2_CLASS, &dev->flags)) {
uinfo->mem[1].addr = (unsigned long) cp->status_blk.gen &
--
1.7.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH net-next 4/4] cnic: Handle RAMROD_CMD_ID_CLOSE error.
2012-06-28 1:08 ` [PATCH net-next 3/4] cnic: Remove uio mem[0] Michael Chan
@ 2012-06-28 1:08 ` Michael Chan
2012-06-28 1:08 ` [PATCH net-next 1/2] bnx2: Add "fall through" comments Michael Chan
2012-06-28 4:29 ` [PATCH net-next 4/4] cnic: Handle RAMROD_CMD_ID_CLOSE error David Miller
2012-06-28 4:29 ` [PATCH net-next 3/4] cnic: Remove uio mem[0] David Miller
1 sibling, 2 replies; 12+ messages in thread
From: Michael Chan @ 2012-06-28 1:08 UTC (permalink / raw)
To: davem; +Cc: netdev
From: Eddie Wai <eddie.wai@broadcom.com>
If firmware returns error status, proceed to close the iSCSI connection.
Update version to 2.5.11.
Signed-off-by: Eddie Wai <eddie.wai@broadcom.com>
Signed-off-by: Michael Chan <mchan@broadcom.com>
---
drivers/net/ethernet/broadcom/cnic.c | 9 +++++++++
drivers/net/ethernet/broadcom/cnic_if.h | 4 ++--
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/cnic.c b/drivers/net/ethernet/broadcom/cnic.c
index ec43df1..f897306 100644
--- a/drivers/net/ethernet/broadcom/cnic.c
+++ b/drivers/net/ethernet/broadcom/cnic.c
@@ -3953,6 +3953,15 @@ static void cnic_cm_process_kcqe(struct cnic_dev *dev, struct kcqe *kcqe)
cnic_cm_upcall(cp, csk, opcode);
break;
+ case L5CM_RAMROD_CMD_ID_CLOSE:
+ if (l4kcqe->status != 0) {
+ netdev_warn(dev->netdev, "RAMROD CLOSE compl with "
+ "status 0x%x\n", l4kcqe->status);
+ opcode = L4_KCQE_OPCODE_VALUE_CLOSE_COMP;
+ /* Fall through */
+ } else {
+ break;
+ }
case L4_KCQE_OPCODE_VALUE_RESET_RECEIVED:
case L4_KCQE_OPCODE_VALUE_CLOSE_COMP:
case L4_KCQE_OPCODE_VALUE_RESET_COMP:
diff --git a/drivers/net/ethernet/broadcom/cnic_if.h b/drivers/net/ethernet/broadcom/cnic_if.h
index d63d455..54f68f0 100644
--- a/drivers/net/ethernet/broadcom/cnic_if.h
+++ b/drivers/net/ethernet/broadcom/cnic_if.h
@@ -14,8 +14,8 @@
#include "bnx2x/bnx2x_mfw_req.h"
-#define CNIC_MODULE_VERSION "2.5.10"
-#define CNIC_MODULE_RELDATE "March 21, 2012"
+#define CNIC_MODULE_VERSION "2.5.11"
+#define CNIC_MODULE_RELDATE "June 27, 2012"
#define CNIC_ULP_RDMA 0
#define CNIC_ULP_ISCSI 1
--
1.7.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH net-next 1/2] bnx2: Add "fall through" comments
2012-06-28 1:08 ` [PATCH net-next 4/4] cnic: Handle RAMROD_CMD_ID_CLOSE error Michael Chan
@ 2012-06-28 1:08 ` Michael Chan
2012-06-28 1:08 ` [PATCH net-next 2/2] bnx2: Add missing netif_tx_disable() in bnx2_close() Michael Chan
2012-06-28 4:28 ` [PATCH net-next 1/2] bnx2: Add "fall through" comments David Miller
2012-06-28 4:29 ` [PATCH net-next 4/4] cnic: Handle RAMROD_CMD_ID_CLOSE error David Miller
1 sibling, 2 replies; 12+ messages in thread
From: Michael Chan @ 2012-06-28 1:08 UTC (permalink / raw)
To: davem; +Cc: netdev
to indicate that the mising break statements are intended.
Signed-off-by: Michael Chan <mchan@broadcom.com>
---
drivers/net/ethernet/broadcom/bnx2.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c
index 9b69a62..e6116ec 100644
--- a/drivers/net/ethernet/broadcom/bnx2.c
+++ b/drivers/net/ethernet/broadcom/bnx2.c
@@ -1972,22 +1972,26 @@ bnx2_remote_phy_event(struct bnx2 *bp)
switch (speed) {
case BNX2_LINK_STATUS_10HALF:
bp->duplex = DUPLEX_HALF;
+ /* fall through */
case BNX2_LINK_STATUS_10FULL:
bp->line_speed = SPEED_10;
break;
case BNX2_LINK_STATUS_100HALF:
bp->duplex = DUPLEX_HALF;
+ /* fall through */
case BNX2_LINK_STATUS_100BASE_T4:
case BNX2_LINK_STATUS_100FULL:
bp->line_speed = SPEED_100;
break;
case BNX2_LINK_STATUS_1000HALF:
bp->duplex = DUPLEX_HALF;
+ /* fall through */
case BNX2_LINK_STATUS_1000FULL:
bp->line_speed = SPEED_1000;
break;
case BNX2_LINK_STATUS_2500HALF:
bp->duplex = DUPLEX_HALF;
+ /* fall through */
case BNX2_LINK_STATUS_2500FULL:
bp->line_speed = SPEED_2500;
break;
--
1.7.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH net-next 2/2] bnx2: Add missing netif_tx_disable() in bnx2_close()
2012-06-28 1:08 ` [PATCH net-next 1/2] bnx2: Add "fall through" comments Michael Chan
@ 2012-06-28 1:08 ` Michael Chan
2012-06-28 4:28 ` David Miller
2012-06-28 4:28 ` [PATCH net-next 1/2] bnx2: Add "fall through" comments David Miller
1 sibling, 1 reply; 12+ messages in thread
From: Michael Chan @ 2012-06-28 1:08 UTC (permalink / raw)
To: davem; +Cc: netdev
to stop all tx queues. Update version to 2.2.3.
Signed-off-by: Michael Chan <mchan@broadcom.com>
---
drivers/net/ethernet/broadcom/bnx2.c | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c
index e6116ec..9eb7624 100644
--- a/drivers/net/ethernet/broadcom/bnx2.c
+++ b/drivers/net/ethernet/broadcom/bnx2.c
@@ -58,8 +58,8 @@
#include "bnx2_fw.h"
#define DRV_MODULE_NAME "bnx2"
-#define DRV_MODULE_VERSION "2.2.2"
-#define DRV_MODULE_RELDATE "June 16, 2012"
+#define DRV_MODULE_VERSION "2.2.3"
+#define DRV_MODULE_RELDATE "June 27, 2012"
#define FW_MIPS_FILE_06 "bnx2/bnx2-mips-06-6.2.3.fw"
#define FW_RV2P_FILE_06 "bnx2/bnx2-rv2p-06-6.0.15.fw"
#define FW_MIPS_FILE_09 "bnx2/bnx2-mips-09-6.2.1b.fw"
@@ -6703,6 +6703,7 @@ bnx2_close(struct net_device *dev)
bnx2_disable_int_sync(bp);
bnx2_napi_disable(bp);
+ netif_tx_disable(dev);
del_timer_sync(&bp->timer);
bnx2_shutdown_chip(bp);
bnx2_free_irq(bp);
--
1.7.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH net-next 1/2] bnx2: Add "fall through" comments
2012-06-28 1:08 ` [PATCH net-next 1/2] bnx2: Add "fall through" comments Michael Chan
2012-06-28 1:08 ` [PATCH net-next 2/2] bnx2: Add missing netif_tx_disable() in bnx2_close() Michael Chan
@ 2012-06-28 4:28 ` David Miller
1 sibling, 0 replies; 12+ messages in thread
From: David Miller @ 2012-06-28 4:28 UTC (permalink / raw)
To: mchan; +Cc: netdev
From: "Michael Chan" <mchan@broadcom.com>
Date: Wed, 27 Jun 2012 18:08:23 -0700
> to indicate that the mising break statements are intended.
>
> Signed-off-by: Michael Chan <mchan@broadcom.com>
Applied.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH net-next 2/2] bnx2: Add missing netif_tx_disable() in bnx2_close()
2012-06-28 1:08 ` [PATCH net-next 2/2] bnx2: Add missing netif_tx_disable() in bnx2_close() Michael Chan
@ 2012-06-28 4:28 ` David Miller
0 siblings, 0 replies; 12+ messages in thread
From: David Miller @ 2012-06-28 4:28 UTC (permalink / raw)
To: mchan; +Cc: netdev
From: "Michael Chan" <mchan@broadcom.com>
Date: Wed, 27 Jun 2012 18:08:24 -0700
> to stop all tx queues. Update version to 2.2.3.
>
> Signed-off-by: Michael Chan <mchan@broadcom.com>
Applied.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH net-next 1/4] cnic: Fix occasional NULL pointer dereference during reboot.
2012-06-28 1:08 [PATCH net-next 1/4] cnic: Fix occasional NULL pointer dereference during reboot Michael Chan
2012-06-28 1:08 ` [PATCH net-next 2/4] cnic: Read bnx2x function number from internal register Michael Chan
@ 2012-06-28 4:28 ` David Miller
1 sibling, 0 replies; 12+ messages in thread
From: David Miller @ 2012-06-28 4:28 UTC (permalink / raw)
To: mchan; +Cc: netdev
From: "Michael Chan" <mchan@broadcom.com>
Date: Wed, 27 Jun 2012 18:08:19 -0700
> We register with bnx2x before we allocate ctx_tbl structure, so it is
> possible for bnx2x to call cnic_ctl before the structure is allocated.
> This can sometimes cause NULL pointer dereference of cp->ctx_tbl. We
> fix this by adding simple checking for valid state before proceeding.
> The cnic_ctl call is RCU protected so we don't have to deal with race
> conditions.
>
> Because of the additional checking, we need to finish the shutdown
> before clearing the CNIC_UP flag.
>
> Signed-off-by: Michael Chan <mchan@broadcom.com>
Applied.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH net-next 2/4] cnic: Read bnx2x function number from internal register
2012-06-28 1:08 ` [PATCH net-next 2/4] cnic: Read bnx2x function number from internal register Michael Chan
2012-06-28 1:08 ` [PATCH net-next 3/4] cnic: Remove uio mem[0] Michael Chan
@ 2012-06-28 4:28 ` David Miller
1 sibling, 0 replies; 12+ messages in thread
From: David Miller @ 2012-06-28 4:28 UTC (permalink / raw)
To: mchan; +Cc: netdev
From: "Michael Chan" <mchan@broadcom.com>
Date: Wed, 27 Jun 2012 18:08:20 -0700
> From: Eddie Wai <eddie.wai@broadcom.com>
>
> so that it will work on any hypervisor.
>
> Signed-off-by: Eddie Wai <eddie.wai@broadcom.com>
> Signed-off-by: Michael Chan <mchan@broadcom.com>
Applied.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH net-next 3/4] cnic: Remove uio mem[0].
2012-06-28 1:08 ` [PATCH net-next 3/4] cnic: Remove uio mem[0] Michael Chan
2012-06-28 1:08 ` [PATCH net-next 4/4] cnic: Handle RAMROD_CMD_ID_CLOSE error Michael Chan
@ 2012-06-28 4:29 ` David Miller
1 sibling, 0 replies; 12+ messages in thread
From: David Miller @ 2012-06-28 4:29 UTC (permalink / raw)
To: mchan; +Cc: netdev
From: "Michael Chan" <mchan@broadcom.com>
Date: Wed, 27 Jun 2012 18:08:21 -0700
> This memory region is no longer used. Userspace gets the BAR address
> directly from sysfs.
>
> Signed-off-by: Michael Chan <mchan@broadcom.com>
Applied.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH net-next 4/4] cnic: Handle RAMROD_CMD_ID_CLOSE error.
2012-06-28 1:08 ` [PATCH net-next 4/4] cnic: Handle RAMROD_CMD_ID_CLOSE error Michael Chan
2012-06-28 1:08 ` [PATCH net-next 1/2] bnx2: Add "fall through" comments Michael Chan
@ 2012-06-28 4:29 ` David Miller
1 sibling, 0 replies; 12+ messages in thread
From: David Miller @ 2012-06-28 4:29 UTC (permalink / raw)
To: mchan; +Cc: netdev
From: "Michael Chan" <mchan@broadcom.com>
Date: Wed, 27 Jun 2012 18:08:22 -0700
> From: Eddie Wai <eddie.wai@broadcom.com>
>
> If firmware returns error status, proceed to close the iSCSI connection.
> Update version to 2.5.11.
>
> Signed-off-by: Eddie Wai <eddie.wai@broadcom.com>
> Signed-off-by: Michael Chan <mchan@broadcom.com>
Applied.
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2012-06-28 4:29 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-06-28 1:08 [PATCH net-next 1/4] cnic: Fix occasional NULL pointer dereference during reboot Michael Chan
2012-06-28 1:08 ` [PATCH net-next 2/4] cnic: Read bnx2x function number from internal register Michael Chan
2012-06-28 1:08 ` [PATCH net-next 3/4] cnic: Remove uio mem[0] Michael Chan
2012-06-28 1:08 ` [PATCH net-next 4/4] cnic: Handle RAMROD_CMD_ID_CLOSE error Michael Chan
2012-06-28 1:08 ` [PATCH net-next 1/2] bnx2: Add "fall through" comments Michael Chan
2012-06-28 1:08 ` [PATCH net-next 2/2] bnx2: Add missing netif_tx_disable() in bnx2_close() Michael Chan
2012-06-28 4:28 ` David Miller
2012-06-28 4:28 ` [PATCH net-next 1/2] bnx2: Add "fall through" comments David Miller
2012-06-28 4:29 ` [PATCH net-next 4/4] cnic: Handle RAMROD_CMD_ID_CLOSE error David Miller
2012-06-28 4:29 ` [PATCH net-next 3/4] cnic: Remove uio mem[0] David Miller
2012-06-28 4:28 ` [PATCH net-next 2/4] cnic: Read bnx2x function number from internal register David Miller
2012-06-28 4:28 ` [PATCH net-next 1/4] cnic: Fix occasional NULL pointer dereference during reboot David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).