[ewg] [PATCH 4/5] RDMA/nes: fix for a problem with non-aligned buffers crash during post_recv

miroslaw.walukiewicz at intel.com miroslaw.walukiewicz at intel.com
Thu Dec 9 08:01:53 PST 2010


Now the physical adresses of buffers posted to HW is aligned properly
when the packet content is on boundry of two different pages

Signed-off-by: Mirek Walukiewicz <miroslaw.walukiewicz at intel.com>
---

 .../fixes/nes_0054_ima_buff_align_fix.patch        |   21 +++++++++++++++++++++
 1 files changed, 21 insertions(+), 0 deletions(-)
 create mode 100644 kernel_patches/fixes/nes_0054_ima_buff_align_fix.patch


diff --git a/kernel_patches/fixes/nes_0054_ima_buff_align_fix.patch b/kernel_patches/fixes/nes_0054_ima_buff_align_fix.patch
new file mode 100644
index 0000000..99e534a
--- /dev/null
+++ b/kernel_patches/fixes/nes_0054_ima_buff_align_fix.patch
@@ -0,0 +1,21 @@
+diff --git a/drivers/infiniband/hw/nes/nes_ud.c b/drivers/infiniband/hw/nes/nes_ud.c
+index 0ceb9a2..d0af571 100644
+--- a/drivers/infiniband/hw/nes/nes_ud.c
++++ b/drivers/infiniband/hw/nes/nes_ud.c
+@@ -1595,6 +1595,7 @@ int nes_ud_post_recv(struct nes_ud_file *file,
+ 		page_id = ((mr->va & ~PAGE_MASK) + mr_offset) >> PAGE_SHIFT;
+ 
+ 		nic_rqe->wqe_words[NES_NIC_RQ_WQE_LENGTH_3_2_IDX] = 0;
++		nic_rqe->wqe_words[NES_NIC_RQ_WQE_LENGTH_1_0_IDX] = 0;
+ 
+ 		wqe_fragment_length =
+ 		(u16 *)&nic_rqe->wqe_words[NES_NIC_RQ_WQE_LENGTH_1_0_IDX];
+@@ -1612,7 +1613,7 @@ int nes_ud_post_recv(struct nes_ud_file *file,
+ 			NES_NIC_RQ_WQE_FRAG0_LOW_IDX + 2*wqe_fragment_index,
+ 				  mr->addrs[page_id]+page_offset);
+ 
+-			if (remaining_length >= PAGE_SIZE)
++			if (remaining_length >= (PAGE_SIZE - page_offset))
+ 				wqe_fragment_length[wqe_fragment_index] =
+ 					cpu_to_le16(PAGE_SIZE - page_offset);
+ 			else





More information about the ewg mailing list