diff options
Diffstat (limited to 'drivers/infiniband/core/mad.c')
| -rw-r--r-- | drivers/infiniband/core/mad.c | 20 | 
1 files changed, 10 insertions, 10 deletions
diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c index cc99479b2c09..9947d16edef2 100644 --- a/drivers/infiniband/core/mad.c +++ b/drivers/infiniband/core/mad.c @@ -3224,18 +3224,18 @@ static int ib_mad_port_open(struct ib_device *device,  	if (has_smi)  		cq_size *= 2; +	port_priv->pd = ib_alloc_pd(device, 0); +	if (IS_ERR(port_priv->pd)) { +		dev_err(&device->dev, "Couldn't create ib_mad PD\n"); +		ret = PTR_ERR(port_priv->pd); +		goto error3; +	} +  	port_priv->cq = ib_alloc_cq(port_priv->device, port_priv, cq_size, 0,  			IB_POLL_UNBOUND_WORKQUEUE);  	if (IS_ERR(port_priv->cq)) {  		dev_err(&device->dev, "Couldn't create ib_mad CQ\n");  		ret = PTR_ERR(port_priv->cq); -		goto error3; -	} - -	port_priv->pd = ib_alloc_pd(device, 0); -	if (IS_ERR(port_priv->pd)) { -		dev_err(&device->dev, "Couldn't create ib_mad PD\n"); -		ret = PTR_ERR(port_priv->pd);  		goto error4;  	} @@ -3278,11 +3278,11 @@ error8:  error7:  	destroy_mad_qp(&port_priv->qp_info[0]);  error6: -	ib_dealloc_pd(port_priv->pd); -error4:  	ib_free_cq(port_priv->cq);  	cleanup_recv_queue(&port_priv->qp_info[1]);  	cleanup_recv_queue(&port_priv->qp_info[0]); +error4: +	ib_dealloc_pd(port_priv->pd);  error3:  	kfree(port_priv); @@ -3312,8 +3312,8 @@ static int ib_mad_port_close(struct ib_device *device, int port_num)  	destroy_workqueue(port_priv->wq);  	destroy_mad_qp(&port_priv->qp_info[1]);  	destroy_mad_qp(&port_priv->qp_info[0]); -	ib_dealloc_pd(port_priv->pd);  	ib_free_cq(port_priv->cq); +	ib_dealloc_pd(port_priv->pd);  	cleanup_recv_queue(&port_priv->qp_info[1]);  	cleanup_recv_queue(&port_priv->qp_info[0]);  	/* XXX: Handle deallocation of MAD registration tables */  | 
