diff options
Diffstat (limited to 'drivers/infiniband/hw/qib/qib_qp.c')
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_qp.c | 7 | 
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/qib/qib_qp.c b/drivers/infiniband/hw/qib/qib_qp.c index 7e7e16fbee9..1ce56b51ab1 100644 --- a/drivers/infiniband/hw/qib/qib_qp.c +++ b/drivers/infiniband/hw/qib/qib_qp.c @@ -1038,6 +1038,11 @@ struct ib_qp *qib_create_qp(struct ib_pd *ibpd,  			goto bail_swq;  		}  		RCU_INIT_POINTER(qp->next, NULL); +		qp->s_hdr = kzalloc(sizeof(*qp->s_hdr), GFP_KERNEL); +		if (!qp->s_hdr) { +			ret = ERR_PTR(-ENOMEM); +			goto bail_qp; +		}  		qp->timeout_jiffies =  			usecs_to_jiffies((4096UL * (1UL << qp->timeout)) /  				1000UL); @@ -1159,6 +1164,7 @@ bail_ip:  		vfree(qp->r_rq.wq);  	free_qpn(&dev->qpn_table, qp->ibqp.qp_num);  bail_qp: +	kfree(qp->s_hdr);  	kfree(qp);  bail_swq:  	vfree(swq); @@ -1214,6 +1220,7 @@ int qib_destroy_qp(struct ib_qp *ibqp)  	else  		vfree(qp->r_rq.wq);  	vfree(qp->s_wq); +	kfree(qp->s_hdr);  	kfree(qp);  	return 0;  }  |