[ofa-general] [PATCH] core: ib_uverbs_reg_xrc_rcv_qp thinko fix.

Jack Morgenstein jackm at dev.mellanox.co.il
Sun Mar 30 05:07:03 PDT 2008


core: ib_uverbs_reg_xrc_rcv_qp thinko fix.
    
When caller calls ib_uverbs_reg_xrc_rcv_qp more than once for a given
receive QP, should return in_len, and should not call put_xrcd_read again.
    
Found By: Ronni Zimmerman of Mellanox QA.
    
Signed-off-by: Jack Morgenstein <jackm at mellanox.co.il>

diff --git a/kernel_patches/fixes/core_0110_xrc_rcv.patch b/kernel_patches/fixes/core_0110_xrc_rcv.patch
index 56b9ac4..c5b5af4 100644
--- a/kernel_patches/fixes/core_0110_xrc_rcv.patch
+++ b/kernel_patches/fixes/core_0110_xrc_rcv.patch
@@ -183,7 +183,7 @@ Index: ofed_kernel/drivers/infiniband/core/uverbs_cmd.c
  {
  	struct inode		   *inode = NULL;
  	int                         ret = 0;
-@@ -2625,4 +2640,352 @@ void ib_uverbs_dealloc_xrcd(struct ib_de
+@@ -2625,4 +2640,351 @@ void ib_uverbs_dealloc_xrcd(struct ib_de
  		xrcd_table_delete(ib_dev, inode);
  }
  
@@ -475,8 +475,7 @@ Index: ofed_kernel/drivers/infiniband/core/uverbs_cmd.c
 +		if (cmd.qp_num == tmp->qp_num) {
 +			kfree(qp_obj);
 +			mutex_unlock(&file->mutex);
-+			put_xrcd_read(xrcd_uobj);
-+			return 0;
++			return in_len;
 +		}
 +	qp_obj->qp_num = cmd.qp_num;
 +	qp_obj->domain_handle = cmd.xrc_domain_handle;



More information about the general mailing list