Subject: [PATCH 7/7] IB/ehca: Prevent overwriting QP init attributes given by caller

From: Stefan Roscher <[email-masked]>
Date: Wed, 8 Aug 2007 20:44:37 +0200

Signed-off-by: Stefan Roscher <[email-masked]>
---
 drivers/infiniband/hw/ehca/ehca_qp.c |   14 +++++---------
 1 files changed, 5 insertions(+), 9 deletions(-)

diff --git a/drivers/infiniband/hw/ehca/ehca_qp.c b/drivers/infiniband/hw/ehca/ehca_qp.c
index d8c1c22..6efda3d 100644
--- a/drivers/infiniband/hw/ehca/ehca_qp.c
+++ b/drivers/infiniband/hw/ehca/ehca_qp.c
@@ -709,12 +709,12 @@ static struct ehca_qp *internal_create_qp(
 		my_qp->ib_qp.event_handler = init_attr->event_handler;
 	}
 
-	init_attr->cap.max_inline_data = 0; /* not supported yet */
-	init_attr->cap.max_recv_sge = parms.rqueue.act_nr_sges;
-	init_attr->cap.max_recv_wr = parms.rqueue.act_nr_wqes;
-	init_attr->cap.max_send_sge = parms.squeue.act_nr_sges;
-	init_attr->cap.max_send_wr = parms.squeue.act_nr_wqes;
 	my_qp->init_attr = *init_attr;
+	my_qp->init_attr.cap.max_inline_data = 0; /* not supported yet */
+	my_qp->init_attr.cap.max_recv_sge = parms.rqueue.act_nr_sges;
+	my_qp->init_attr.cap.max_recv_wr = parms.rqueue.act_nr_wqes;
+	my_qp->init_attr.cap.max_send_sge = parms.squeue.act_nr_sges;
+	my_qp->init_attr.cap.max_send_wr = parms.squeue.act_nr_wqes;
 
 	/* NOTE: define_apq0() not supported yet */
 	if (qp_type == IB_QPT_GSI) {
@@ -825,10 +825,6 @@ struct ib_srq *ehca_create_srq(struct ib_pd *pd,
 	if (IS_ERR(my_qp))
 		return (struct ib_srq *)my_qp;
 
-	/* copy back return values */
-	srq_init_attr->attr.max_wr = qp_init_attr.cap.max_recv_wr;
-	srq_init_attr->attr.max_sge = qp_init_attr.cap.max_recv_sge;
-
 	/* drive SRQ into RTR state */
 	mqpcb = ehca_alloc_fw_ctrlblock(GFP_KERNEL);
 	if (!mqpcb) {
-- 
1.5.2