[ewg] [PATCH] RDMA/nes: AE for closed QP causes crash

Faisal Latif faisal.latif at intel.com
Fri May 21 14:55:08 PDT 2010


modify_qp() closes qp and AE handling also attempts to close qp
causing system to crash. Now we check the state of QP before
processing the AE.

Signed-off-by: Faisal Latif <faisal.latif at intel.com>
---
 kernel_patches/fixes/nes_0034_disconnect.patch |   30 ++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)
 create mode 100644 kernel_patches/fixes/nes_0034_disconnect.patch

diff --git a/kernel_patches/fixes/nes_0034_disconnect.patch b/kernel_patches/fixes/nes_0034_disconnect.patch
new file mode 100644
index 0000000..ecc6901
--- /dev/null
+++ b/kernel_patches/fixes/nes_0034_disconnect.patch
@@ -0,0 +1,30 @@
+diff --git a/drivers/infiniband/hw/nes/nes_hw.c b/drivers/infiniband/hw/nes/nes_hw.c
+index 5e83962..4f917ee 100644
+--- a/drivers/infiniband/hw/nes/nes_hw.c
++++ b/drivers/infiniband/hw/nes/nes_hw.c
+@@ -3421,6 +3421,7 @@ static void nes_process_iwarp_aeqe(struct nes_device *nesdev,
+ 	struct nes_adapter *nesadapter = nesdev->nesadapter;
+ 	u32 aeq_info;
+ 	u32 next_iwarp_state = 0;
++	u32 aeqe_cq_id;
+ 	u16 async_event_id;
+ 	u8 tcp_state;
+ 	u8 iwarp_state;
+@@ -3448,6 +3449,14 @@ static void nes_process_iwarp_aeqe(struct nes_device *nesdev,
+ 			le32_to_cpu(aeqe->aeqe_words[NES_AEQE_COMP_QP_CQ_ID_IDX]), aeqe,
+ 			nes_tcp_state_str[tcp_state], nes_iwarp_state_str[iwarp_state]);
+
++	aeqe_cq_id = le32_to_cpu(aeqe->aeqe_words[NES_AEQE_COMP_QP_CQ_ID_IDX]);
++	if (aeq_info & NES_AEQE_QP) {
++		if ((!nes_is_resource_allocated(nesadapter, nesadapter->allocated_qps,
++				aeqe_cq_id)) ||
++				(atomic_read(&nesqp->close_timer_started)))
++			return;
++	}
++
+ 	switch (async_event_id) {
+ 		case NES_AEQE_AEID_LLP_FIN_RECEIVED:
+ 			if (nesqp->term_flags)
+--
+1.6.0
+
-- 
1.6.0




More information about the ewg mailing list