All of lore.kernel.org
 help / color / mirror / Atom feed
* [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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.