|
|
@@ -3182,18 +3182,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_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;
|
|
|
}
|
|
|
|
|
|
@@ -3236,11 +3236,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);
|
|
|
|
|
|
@@ -3270,8 +3270,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 */
|