RDMA: Use %pe format specifier for error pointers
Convert error logging throughout the RDMA subsystem to use the %pe format specifier instead of PTR_ERR() with integer format specifiers. Link: https://patch.msgid.link/e81ec02df1e474be20417fb62e779776e3f47a50.1758217936.git.leon@kernel.org Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev> Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
This commit is contained in:
committed by
Leon Romanovsky
parent
260cce64aa
commit
4b6b6233f5
@@ -110,8 +110,7 @@ void agent_send_response(const struct ib_mad_hdr *mad_hdr, const struct ib_grh *
|
||||
agent = port_priv->agent[qpn];
|
||||
ah = ib_create_ah_from_wc(agent->qp->pd, wc, grh, port_num);
|
||||
if (IS_ERR(ah)) {
|
||||
dev_err(&device->dev, "ib_create_ah_from_wc error %ld\n",
|
||||
PTR_ERR(ah));
|
||||
dev_err(&device->dev, "ib_create_ah_from_wc error %pe\n", ah);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -3307,9 +3307,9 @@ int bnxt_re_resize_cq(struct ib_cq *ibcq, int cqe, struct ib_udata *udata)
|
||||
IB_ACCESS_LOCAL_WRITE);
|
||||
if (IS_ERR(cq->resize_umem)) {
|
||||
rc = PTR_ERR(cq->resize_umem);
|
||||
ibdev_err(&rdev->ibdev, "%s: ib_umem_get failed! rc = %pe\n",
|
||||
__func__, cq->resize_umem);
|
||||
cq->resize_umem = NULL;
|
||||
ibdev_err(&rdev->ibdev, "%s: ib_umem_get failed! rc = %d\n",
|
||||
__func__, rc);
|
||||
goto fail;
|
||||
}
|
||||
cq->resize_cqe = entries;
|
||||
|
||||
@@ -1956,8 +1956,7 @@ static void bnxt_re_read_vpd_info(struct bnxt_re_dev *rdev)
|
||||
|
||||
vpd_data = pci_vpd_alloc(pdev, &vpd_size);
|
||||
if (IS_ERR(vpd_data)) {
|
||||
pci_warn(pdev, "Unable to read VPD, err=%ld\n",
|
||||
PTR_ERR(vpd_data));
|
||||
pci_warn(pdev, "Unable to read VPD, err=%pe\n", vpd_data);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -1228,9 +1228,8 @@ static int c4iw_uld_state_change(void *handle, enum cxgb4_state new_state)
|
||||
if (!ctx->dev) {
|
||||
ctx->dev = c4iw_alloc(&ctx->lldi);
|
||||
if (IS_ERR(ctx->dev)) {
|
||||
pr_err("%s: initialization failed: %ld\n",
|
||||
pci_name(ctx->lldi.pdev),
|
||||
PTR_ERR(ctx->dev));
|
||||
pr_err("%s: initialization failed: %pe\n",
|
||||
pci_name(ctx->lldi.pdev), ctx->dev);
|
||||
ctx->dev = NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -635,9 +635,9 @@ int efa_com_cmd_exec(struct efa_com_admin_queue *aq,
|
||||
if (IS_ERR(comp_ctx)) {
|
||||
ibdev_err_ratelimited(
|
||||
aq->efa_dev,
|
||||
"Failed to submit command %s (opcode %u) err %ld\n",
|
||||
"Failed to submit command %s (opcode %u) err %pe\n",
|
||||
efa_com_cmd_str(cmd->aq_common_descriptor.opcode),
|
||||
cmd->aq_common_descriptor.opcode, PTR_ERR(comp_ctx));
|
||||
cmd->aq_common_descriptor.opcode, comp_ctx);
|
||||
|
||||
up(&aq->avail_cmds);
|
||||
atomic64_inc(&aq->stats.cmd_err);
|
||||
|
||||
@@ -1788,7 +1788,8 @@ struct ib_mr *efa_reg_user_mr_dmabuf(struct ib_pd *ibpd, u64 start,
|
||||
access_flags);
|
||||
if (IS_ERR(umem_dmabuf)) {
|
||||
err = PTR_ERR(umem_dmabuf);
|
||||
ibdev_dbg(&dev->ibdev, "Failed to get dmabuf umem[%d]\n", err);
|
||||
ibdev_dbg(&dev->ibdev, "Failed to get dmabuf umem[%pe]\n",
|
||||
umem_dmabuf);
|
||||
goto err_free;
|
||||
}
|
||||
|
||||
@@ -1832,7 +1833,8 @@ struct ib_mr *efa_reg_mr(struct ib_pd *ibpd, u64 start, u64 length,
|
||||
if (IS_ERR(mr->umem)) {
|
||||
err = PTR_ERR(mr->umem);
|
||||
ibdev_dbg(&dev->ibdev,
|
||||
"Failed to pin and map user space memory[%d]\n", err);
|
||||
"Failed to pin and map user space memory[%pe]\n",
|
||||
mr->umem);
|
||||
goto err_free;
|
||||
}
|
||||
|
||||
|
||||
@@ -64,9 +64,9 @@ int hfi1_cdev_init(int minor, const char *name,
|
||||
|
||||
if (IS_ERR(device)) {
|
||||
ret = PTR_ERR(device);
|
||||
pr_err("Could not create device for minor %d, %s (err %pe)\n",
|
||||
minor, name, device);
|
||||
device = NULL;
|
||||
pr_err("Could not create device for minor %d, %s (err %d)\n",
|
||||
minor, name, -ret);
|
||||
cdev_del(cdev);
|
||||
}
|
||||
done:
|
||||
|
||||
@@ -498,8 +498,8 @@ int hfi1_user_sdma_process_request(struct hfi1_filedata *fd,
|
||||
ntids, sizeof(*req->tids));
|
||||
if (IS_ERR(tmp)) {
|
||||
ret = PTR_ERR(tmp);
|
||||
SDMA_DBG(req, "Failed to copy %d TIDs (%d)",
|
||||
ntids, ret);
|
||||
SDMA_DBG(req, "Failed to copy %d TIDs (%pe)", ntids,
|
||||
tmp);
|
||||
goto free_req;
|
||||
}
|
||||
req->tids = tmp;
|
||||
|
||||
@@ -594,8 +594,8 @@ static int mtr_alloc_bufs(struct hns_roce_dev *hr_dev, struct hns_roce_mtr *mtr,
|
||||
mtr->umem = ib_umem_get(ibdev, user_addr, total_size,
|
||||
buf_attr->user_access);
|
||||
if (IS_ERR(mtr->umem)) {
|
||||
ibdev_err(ibdev, "failed to get umem, ret = %ld.\n",
|
||||
PTR_ERR(mtr->umem));
|
||||
ibdev_err(ibdev, "failed to get umem, ret = %pe.\n",
|
||||
mtr->umem);
|
||||
return -ENOMEM;
|
||||
}
|
||||
} else {
|
||||
@@ -605,8 +605,8 @@ static int mtr_alloc_bufs(struct hns_roce_dev *hr_dev, struct hns_roce_mtr *mtr,
|
||||
!mtr_has_mtt(buf_attr) ?
|
||||
HNS_ROCE_BUF_DIRECT : 0);
|
||||
if (IS_ERR(mtr->kmem)) {
|
||||
ibdev_err(ibdev, "failed to alloc kmem, ret = %ld.\n",
|
||||
PTR_ERR(mtr->kmem));
|
||||
ibdev_err(ibdev, "failed to alloc kmem, ret = %pe.\n",
|
||||
mtr->kmem);
|
||||
return PTR_ERR(mtr->kmem);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1108,13 +1108,13 @@ int ionic_create_rdma_admin(struct ionic_ibdev *dev)
|
||||
|
||||
if (eq_i < IONIC_EQ_COUNT_MIN) {
|
||||
ibdev_err(&dev->ibdev,
|
||||
"fail create eq %d\n", rc);
|
||||
"fail create eq %pe\n", eq);
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* ok, just fewer eq than device supports */
|
||||
ibdev_dbg(&dev->ibdev, "eq count %d want %d rc %d\n",
|
||||
eq_i, dev->lif_cfg.eq_count, rc);
|
||||
ibdev_dbg(&dev->ibdev, "eq count %d want %d rc %pe\n",
|
||||
eq_i, dev->lif_cfg.eq_count, eq);
|
||||
|
||||
rc = 0;
|
||||
break;
|
||||
@@ -1140,13 +1140,13 @@ int ionic_create_rdma_admin(struct ionic_ibdev *dev)
|
||||
|
||||
if (!aq_i) {
|
||||
ibdev_err(&dev->ibdev,
|
||||
"failed to create acq %d\n", rc);
|
||||
"failed to create acq %pe\n", vcq);
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* ok, just fewer adminq than device supports */
|
||||
ibdev_dbg(&dev->ibdev, "acq count %d want %d rc %d\n",
|
||||
aq_i, dev->lif_cfg.aq_count, rc);
|
||||
ibdev_dbg(&dev->ibdev, "acq count %d want %d rc %pe\n",
|
||||
aq_i, dev->lif_cfg.aq_count, vcq);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1161,13 +1161,13 @@ int ionic_create_rdma_admin(struct ionic_ibdev *dev)
|
||||
|
||||
if (!aq_i) {
|
||||
ibdev_err(&dev->ibdev,
|
||||
"failed to create aq %d\n", rc);
|
||||
"failed to create aq %pe\n", aq);
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* ok, just fewer adminq than device supports */
|
||||
ibdev_dbg(&dev->ibdev, "aq count %d want %d rc %d\n",
|
||||
aq_i, dev->lif_cfg.aq_count, rc);
|
||||
ibdev_dbg(&dev->ibdev, "aq count %d want %d rc %pe\n",
|
||||
aq_i, dev->lif_cfg.aq_count, aq);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -3600,9 +3600,9 @@ static struct ib_mr *irdma_reg_user_mr_dmabuf(struct ib_pd *pd, u64 start,
|
||||
|
||||
umem_dmabuf = ib_umem_dmabuf_get_pinned(pd->device, start, len, fd, access);
|
||||
if (IS_ERR(umem_dmabuf)) {
|
||||
err = PTR_ERR(umem_dmabuf);
|
||||
ibdev_dbg(&iwdev->ibdev, "Failed to get dmabuf umem[%d]\n", err);
|
||||
return ERR_PTR(err);
|
||||
ibdev_dbg(&iwdev->ibdev, "Failed to get dmabuf umem[%pe]\n",
|
||||
umem_dmabuf);
|
||||
return ERR_CAST(umem_dmabuf);
|
||||
}
|
||||
|
||||
iwmr = irdma_alloc_iwmr(&umem_dmabuf->umem, pd, virt, IRDMA_MEMREG_TYPE_MEM);
|
||||
|
||||
@@ -273,9 +273,8 @@ int mana_ib_create_queue(struct mana_ib_dev *mdev, u64 addr, u32 size,
|
||||
|
||||
umem = ib_umem_get(&mdev->ib_dev, addr, size, IB_ACCESS_LOCAL_WRITE);
|
||||
if (IS_ERR(umem)) {
|
||||
err = PTR_ERR(umem);
|
||||
ibdev_dbg(&mdev->ib_dev, "Failed to get umem, %d\n", err);
|
||||
return err;
|
||||
ibdev_dbg(&mdev->ib_dev, "Failed to get umem, %pe\n", umem);
|
||||
return PTR_ERR(umem);
|
||||
}
|
||||
|
||||
err = mana_ib_create_zero_offset_dma_region(mdev, umem, &queue->gdma_region);
|
||||
|
||||
@@ -138,7 +138,8 @@ struct ib_mr *mana_ib_reg_user_mr(struct ib_pd *ibpd, u64 start, u64 length,
|
||||
if (IS_ERR(mr->umem)) {
|
||||
err = PTR_ERR(mr->umem);
|
||||
ibdev_dbg(ibdev,
|
||||
"Failed to get umem for register user-mr, %d\n", err);
|
||||
"Failed to get umem for register user-mr, %pe\n",
|
||||
mr->umem);
|
||||
goto err_free;
|
||||
}
|
||||
|
||||
@@ -220,7 +221,8 @@ struct ib_mr *mana_ib_reg_user_mr_dmabuf(struct ib_pd *ibpd, u64 start, u64 leng
|
||||
umem_dmabuf = ib_umem_dmabuf_get_pinned(ibdev, start, length, fd, access_flags);
|
||||
if (IS_ERR(umem_dmabuf)) {
|
||||
err = PTR_ERR(umem_dmabuf);
|
||||
ibdev_dbg(ibdev, "Failed to get dmabuf umem, %d\n", err);
|
||||
ibdev_dbg(ibdev, "Failed to get dmabuf umem, %pe\n",
|
||||
umem_dmabuf);
|
||||
goto err_free;
|
||||
}
|
||||
|
||||
|
||||
@@ -1836,9 +1836,9 @@ static int create_pv_sqp(struct mlx4_ib_demux_pv_ctx *ctx,
|
||||
tun_qp->qp = ib_create_qp(ctx->pd, &qp_init_attr.init_attr);
|
||||
if (IS_ERR(tun_qp->qp)) {
|
||||
ret = PTR_ERR(tun_qp->qp);
|
||||
pr_err("Couldn't create %s QP (%pe)\n",
|
||||
create_tun ? "tunnel" : "special", tun_qp->qp);
|
||||
tun_qp->qp = NULL;
|
||||
pr_err("Couldn't create %s QP (%d)\n",
|
||||
create_tun ? "tunnel" : "special", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -2017,14 +2017,14 @@ static int create_pv_resources(struct ib_device *ibdev, int slave, int port,
|
||||
NULL, ctx, &cq_attr);
|
||||
if (IS_ERR(ctx->cq)) {
|
||||
ret = PTR_ERR(ctx->cq);
|
||||
pr_err("Couldn't create tunnel CQ (%d)\n", ret);
|
||||
pr_err("Couldn't create tunnel CQ (%pe)\n", ctx->cq);
|
||||
goto err_buf;
|
||||
}
|
||||
|
||||
ctx->pd = ib_alloc_pd(ctx->ib_dev, 0);
|
||||
if (IS_ERR(ctx->pd)) {
|
||||
ret = PTR_ERR(ctx->pd);
|
||||
pr_err("Couldn't create tunnel PD (%d)\n", ret);
|
||||
pr_err("Couldn't create tunnel PD (%pe)\n", ctx->pd);
|
||||
goto err_cq;
|
||||
}
|
||||
|
||||
|
||||
@@ -1652,7 +1652,8 @@ int mlx4_ib_create_qp(struct ib_qp *ibqp, struct ib_qp_init_attr *init_attr,
|
||||
sqp->roce_v2_gsi = ib_create_qp(pd, init_attr);
|
||||
|
||||
if (IS_ERR(sqp->roce_v2_gsi)) {
|
||||
pr_err("Failed to create GSI QP for RoCEv2 (%ld)\n", PTR_ERR(sqp->roce_v2_gsi));
|
||||
pr_err("Failed to create GSI QP for RoCEv2 (%pe)\n",
|
||||
sqp->roce_v2_gsi);
|
||||
sqp->roce_v2_gsi = NULL;
|
||||
} else {
|
||||
to_mqp(sqp->roce_v2_gsi)->flags |=
|
||||
|
||||
@@ -35,7 +35,7 @@ static int mlx5_data_direct_vpd_get_vuid(struct mlx5_data_direct_dev *dev)
|
||||
|
||||
vpd_data = pci_vpd_alloc(pdev, &vpd_size);
|
||||
if (IS_ERR(vpd_data)) {
|
||||
pci_err(pdev, "Unable to read VPD, err=%ld\n", PTR_ERR(vpd_data));
|
||||
pci_err(pdev, "Unable to read VPD, err=%pe\n", vpd_data);
|
||||
return PTR_ERR(vpd_data);
|
||||
}
|
||||
|
||||
|
||||
@@ -131,8 +131,9 @@ int mlx5_ib_create_gsi(struct ib_pd *pd, struct mlx5_ib_qp *mqp,
|
||||
gsi->cq = ib_alloc_cq(pd->device, gsi, attr->cap.max_send_wr, 0,
|
||||
IB_POLL_SOFTIRQ);
|
||||
if (IS_ERR(gsi->cq)) {
|
||||
mlx5_ib_warn(dev, "unable to create send CQ for GSI QP. error %ld\n",
|
||||
PTR_ERR(gsi->cq));
|
||||
mlx5_ib_warn(dev,
|
||||
"unable to create send CQ for GSI QP. error %pe\n",
|
||||
gsi->cq);
|
||||
ret = PTR_ERR(gsi->cq);
|
||||
goto err_free_wrs;
|
||||
}
|
||||
@@ -147,8 +148,9 @@ int mlx5_ib_create_gsi(struct ib_pd *pd, struct mlx5_ib_qp *mqp,
|
||||
|
||||
gsi->rx_qp = ib_create_qp(pd, &hw_init_attr);
|
||||
if (IS_ERR(gsi->rx_qp)) {
|
||||
mlx5_ib_warn(dev, "unable to create hardware GSI QP. error %ld\n",
|
||||
PTR_ERR(gsi->rx_qp));
|
||||
mlx5_ib_warn(dev,
|
||||
"unable to create hardware GSI QP. error %pe\n",
|
||||
gsi->rx_qp);
|
||||
ret = PTR_ERR(gsi->rx_qp);
|
||||
goto err_destroy_cq;
|
||||
}
|
||||
@@ -294,8 +296,9 @@ static void setup_qp(struct mlx5_ib_gsi_qp *gsi, u16 qp_index)
|
||||
|
||||
qp = create_gsi_ud_qp(gsi);
|
||||
if (IS_ERR(qp)) {
|
||||
mlx5_ib_warn(dev, "unable to create hardware UD QP for GSI: %ld\n",
|
||||
PTR_ERR(qp));
|
||||
mlx5_ib_warn(dev,
|
||||
"unable to create hardware UD QP for GSI: %pe\n",
|
||||
qp);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -3051,14 +3051,16 @@ int mlx5_ib_dev_res_cq_init(struct mlx5_ib_dev *dev)
|
||||
pd = ib_alloc_pd(ibdev, 0);
|
||||
if (IS_ERR(pd)) {
|
||||
ret = PTR_ERR(pd);
|
||||
mlx5_ib_err(dev, "Couldn't allocate PD for res init, err=%d\n", ret);
|
||||
mlx5_ib_err(dev, "Couldn't allocate PD for res init, err=%pe\n",
|
||||
pd);
|
||||
goto unlock;
|
||||
}
|
||||
|
||||
cq = ib_create_cq(ibdev, NULL, NULL, NULL, &cq_attr);
|
||||
if (IS_ERR(cq)) {
|
||||
ret = PTR_ERR(cq);
|
||||
mlx5_ib_err(dev, "Couldn't create CQ for res init, err=%d\n", ret);
|
||||
mlx5_ib_err(dev, "Couldn't create CQ for res init, err=%pe\n",
|
||||
cq);
|
||||
ib_dealloc_pd(pd);
|
||||
goto unlock;
|
||||
}
|
||||
@@ -3102,7 +3104,9 @@ int mlx5_ib_dev_res_srq_init(struct mlx5_ib_dev *dev)
|
||||
s0 = ib_create_srq(devr->p0, &attr);
|
||||
if (IS_ERR(s0)) {
|
||||
ret = PTR_ERR(s0);
|
||||
mlx5_ib_err(dev, "Couldn't create SRQ 0 for res init, err=%d\n", ret);
|
||||
mlx5_ib_err(dev,
|
||||
"Couldn't create SRQ 0 for res init, err=%pe\n",
|
||||
s0);
|
||||
goto unlock;
|
||||
}
|
||||
|
||||
@@ -3114,7 +3118,9 @@ int mlx5_ib_dev_res_srq_init(struct mlx5_ib_dev *dev)
|
||||
s1 = ib_create_srq(devr->p0, &attr);
|
||||
if (IS_ERR(s1)) {
|
||||
ret = PTR_ERR(s1);
|
||||
mlx5_ib_err(dev, "Couldn't create SRQ 1 for res init, err=%d\n", ret);
|
||||
mlx5_ib_err(dev,
|
||||
"Couldn't create SRQ 1 for res init, err=%pe\n",
|
||||
s1);
|
||||
ib_destroy_srq(s0);
|
||||
}
|
||||
|
||||
|
||||
@@ -1652,8 +1652,7 @@ reg_user_mr_dmabuf(struct ib_pd *pd, struct device *dma_device,
|
||||
fd, access_flags);
|
||||
|
||||
if (IS_ERR(umem_dmabuf)) {
|
||||
mlx5_ib_dbg(dev, "umem_dmabuf get failed (%ld)\n",
|
||||
PTR_ERR(umem_dmabuf));
|
||||
mlx5_ib_dbg(dev, "umem_dmabuf get failed (%pe)\n", umem_dmabuf);
|
||||
return ERR_CAST(umem_dmabuf);
|
||||
}
|
||||
|
||||
|
||||
@@ -667,9 +667,9 @@ static int srpt_refresh_port(struct srpt_port *sport)
|
||||
srpt_mad_recv_handler,
|
||||
sport, 0);
|
||||
if (IS_ERR(mad_agent)) {
|
||||
pr_err("%s-%d: MAD agent registration failed (%ld). Note: this is expected if SR-IOV is enabled.\n",
|
||||
pr_err("%s-%d: MAD agent registration failed (%pe). Note: this is expected if SR-IOV is enabled.\n",
|
||||
dev_name(&sport->sdev->device->dev), sport->port,
|
||||
PTR_ERR(mad_agent));
|
||||
mad_agent);
|
||||
sport->mad_agent = NULL;
|
||||
memset(&port_modify, 0, sizeof(port_modify));
|
||||
port_modify.clr_port_cap_mask = IB_PORT_DEVICE_MGMT_SUP;
|
||||
@@ -1865,8 +1865,8 @@ retry:
|
||||
IB_POLL_WORKQUEUE);
|
||||
if (IS_ERR(ch->cq)) {
|
||||
ret = PTR_ERR(ch->cq);
|
||||
pr_err("failed to create CQ cqe= %d ret= %d\n",
|
||||
ch->rq_size + sq_size, ret);
|
||||
pr_err("failed to create CQ cqe= %d ret= %pe\n",
|
||||
ch->rq_size + sq_size, ch->cq);
|
||||
goto out;
|
||||
}
|
||||
ch->cq_size = ch->rq_size + sq_size;
|
||||
@@ -3132,7 +3132,7 @@ static int srpt_alloc_srq(struct srpt_device *sdev)
|
||||
WARN_ON_ONCE(sdev->srq);
|
||||
srq = ib_create_srq(sdev->pd, &srq_attr);
|
||||
if (IS_ERR(srq)) {
|
||||
pr_debug("ib_create_srq() failed: %ld\n", PTR_ERR(srq));
|
||||
pr_debug("ib_create_srq() failed: %pe\n", srq);
|
||||
return PTR_ERR(srq);
|
||||
}
|
||||
|
||||
@@ -3236,8 +3236,7 @@ static int srpt_add_one(struct ib_device *device)
|
||||
if (rdma_port_get_link_layer(device, 1) == IB_LINK_LAYER_INFINIBAND)
|
||||
sdev->cm_id = ib_create_cm_id(device, srpt_cm_handler, sdev);
|
||||
if (IS_ERR(sdev->cm_id)) {
|
||||
pr_info("ib_create_cm_id() failed: %ld\n",
|
||||
PTR_ERR(sdev->cm_id));
|
||||
pr_info("ib_create_cm_id() failed: %pe\n", sdev->cm_id);
|
||||
ret = PTR_ERR(sdev->cm_id);
|
||||
sdev->cm_id = NULL;
|
||||
if (!rdma_cm_id)
|
||||
@@ -3687,8 +3686,7 @@ static struct rdma_cm_id *srpt_create_rdma_id(struct sockaddr *listen_addr)
|
||||
rdma_cm_id = rdma_create_id(&init_net, srpt_rdma_cm_handler,
|
||||
NULL, RDMA_PS_TCP, IB_QPT_RC);
|
||||
if (IS_ERR(rdma_cm_id)) {
|
||||
pr_err("RDMA/CM ID creation failed: %ld\n",
|
||||
PTR_ERR(rdma_cm_id));
|
||||
pr_err("RDMA/CM ID creation failed: %pe\n", rdma_cm_id);
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user