From nobody Tue Apr 7 15:26:04 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0702C46BF; Thu, 26 Feb 2026 13:08:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772111293; cv=none; b=f/qLcGrf7V+v5VADUes7IQBdtsi3bPtBAflURgF0NxqXMoCJ/drgGz1sTTlLrzezeRQpdgpc1ypefmj+B2xdX/ly5bst9XCu/yv+g9vTKYoiuE6TXulAeAgu2O58bFYrwiYfVoc6umcVRyreGyd2jsXVteWP7HteXH4RIuMLLNc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772111293; c=relaxed/simple; bh=SxjwwG4m5H677q3sX8f8Rn64hq1o4hotX4d75n19YL0=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type; b=XZgpnmrqES4j335fQ9yzxEBXQ6DTAwhxzuWg2v0mybszbCnEVzQfqahTQcOdQCm3+3ZeavCLvoBrI7hirSdm0R9hEKswrFN1RhKDoqN+WUBcGm75WCDJEhzAOKngrKARPDvQGnQDiatao4H103ciy5hSWb/n7cA63sy/TQuwFik= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=NbbaAzqn; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="NbbaAzqn" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 34E91C116C6; Thu, 26 Feb 2026 13:08:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772111292; bh=SxjwwG4m5H677q3sX8f8Rn64hq1o4hotX4d75n19YL0=; h=From:To:Subject:Date:From; b=NbbaAzqnjF5wBa87MM+d+/z93sdOFNlkABQ4Lpt3o9Nz6Ead2vcO/3RuYDwDsfEL+ APAc1sMqiz12YKQxokqORKH9U1jqPlCXeNCcWzx+RkeTM4WJCk8d6zdEfQXnj3X38p CyLb7vCrAWKo+yrDrvacYZjN7t7p2IKe5os21mnepUZ18sMktOiXlHL/Toc3SMnJJ2 zHwpK4Rj+0sDZ/B2EhW9Tr6clRsWVa6soxqfDEEr+tGIhwR4FZjawECRL69JgDlaTM zwI69bO34+gqNUQdoDzazS51u1acZjMLh+AmJ0K+m/5GDKDPAK75cIW9VovzEFvF7a jNdoCPSDJynZw== From: Leon Romanovsky To: linux-rdma@vger.kernel.org, linux-kernel@vger.kernel.org, Selvin Xavier , Kalesh AP , Jason Gunthorpe , Leon Romanovsky , Dennis Dalessandro , Chengchang Tang , Junxian Huang , Krzysztof Czurylo , Tatyana Nikolova , Yishai Hadas , Bryan Tan , Vishnu Dasa , Broadcom internal kernel review list Subject: [PATCH rdma-next] RDMA: Complete k[z|m|c]alloc-to-k[z|m]alloc_obj conversion Date: Thu, 26 Feb 2026 15:07:50 +0200 Message-ID: <20260226-complete-alloc-conversion-v1-1-ebf1df1c2518@nvidia.com> X-Mailer: git-send-email 2.53.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Change-ID: 20260226-complete-alloc-conversion-324aa50d51d0 X-Mailer: b4 0.15-dev-47773 Content-Transfer-Encoding: quoted-printable From: Leon Romanovsky Commits bf4afc53b77a ("Convert 'alloc_obj' family to use the new default GFP_KERNEL argument") and 69050f8d6d07 ("treewide: Replace kmalloc with kmalloc_obj for non-scalar types") updated various k[z|m|c]alloc calls to t= heir k[z|m]alloc_obj counterparts. This commit finalizes that transition within the RDMA subsystem. Signed-off-by: Leon Romanovsky --- drivers/infiniband/hw/bnxt_re/qplib_res.c | 2 +- drivers/infiniband/hw/hfi1/user_exp_rcv.c | 9 ++++----- drivers/infiniband/hw/hns/hns_roce_hem.c | 7 ++----- drivers/infiniband/hw/hns/hns_roce_qp.c | 13 ++++--------- drivers/infiniband/hw/irdma/hw.c | 4 ++-- drivers/infiniband/hw/mlx4/main.c | 2 +- drivers/infiniband/hw/mlx5/devx.c | 6 +++--- drivers/infiniband/hw/mlx5/dm.c | 2 +- drivers/infiniband/hw/mlx5/fs.c | 6 +++--- drivers/infiniband/hw/mlx5/main.c | 8 +++----- drivers/infiniband/hw/mlx5/qos.c | 2 +- drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 15 +++++++-------- drivers/infiniband/hw/vmw_pvrdma/pvrdma_misc.c | 3 +-- 13 files changed, 33 insertions(+), 46 deletions(-) diff --git a/drivers/infiniband/hw/bnxt_re/qplib_res.c b/drivers/infiniband= /hw/bnxt_re/qplib_res.c index 41ad8c2018fd..fa6b8cd137e5 100644 --- a/drivers/infiniband/hw/bnxt_re/qplib_res.c +++ b/drivers/infiniband/hw/bnxt_re/qplib_res.c @@ -790,7 +790,7 @@ static int bnxt_qplib_alloc_dpi_tbl(struct bnxt_qplib_r= es *res, if (dev_attr->max_dpi) dpit->max =3D min_t(u32, dpit->max, dev_attr->max_dpi); =20 - dpit->app_tbl =3D kcalloc(dpit->max, sizeof(void *), GFP_KERNEL); + dpit->app_tbl =3D kzalloc_objs(void *, dpit->max); if (!dpit->app_tbl) return -ENOMEM; =20 diff --git a/drivers/infiniband/hw/hfi1/user_exp_rcv.c b/drivers/infiniband= /hw/hfi1/user_exp_rcv.c index 5b01070ed66f..a916fe0118b1 100644 --- a/drivers/infiniband/hw/hfi1/user_exp_rcv.c +++ b/drivers/infiniband/hw/hfi1/user_exp_rcv.c @@ -257,7 +257,7 @@ int hfi1_user_exp_rcv_setup(struct hfi1_filedata *fd, if (tinfo->length =3D=3D 0) return -EINVAL; =20 - tidbuf =3D kzalloc(sizeof(*tidbuf), GFP_KERNEL); + tidbuf =3D kzalloc_obj(*tidbuf); if (!tidbuf) return -ENOMEM; =20 @@ -265,8 +265,7 @@ int hfi1_user_exp_rcv_setup(struct hfi1_filedata *fd, tidbuf->vaddr =3D tinfo->vaddr; tidbuf->length =3D tinfo->length; tidbuf->npages =3D num_user_pages(tidbuf->vaddr, tidbuf->length); - tidbuf->psets =3D kcalloc(uctxt->expected_count, sizeof(*tidbuf->psets), - GFP_KERNEL); + tidbuf->psets =3D kzalloc_objs(*tidbuf->psets, uctxt->expected_count); if (!tidbuf->psets) { ret =3D -ENOMEM; goto fail_release_mem; @@ -306,7 +305,7 @@ int hfi1_user_exp_rcv_setup(struct hfi1_filedata *fd, } =20 ngroups =3D pageset_count / dd->rcv_entries.group_size; - tidlist =3D kcalloc(pageset_count, sizeof(*tidlist), GFP_KERNEL); + tidlist =3D kzalloc_objs(*tidlist, pageset_count); if (!tidlist) { ret =3D -ENOMEM; goto fail_unreserve; @@ -527,7 +526,7 @@ int hfi1_user_exp_rcv_invalid(struct hfi1_filedata *fd, * for a long time. * Copy the data to a local buffer so we can release the lock. */ - array =3D kcalloc(uctxt->expected_count, sizeof(*array), GFP_KERNEL); + array =3D kzalloc_objs(*array, uctxt->expected_count); if (!array) return -EFAULT; =20 diff --git a/drivers/infiniband/hw/hns/hns_roce_hem.c b/drivers/infiniband/= hw/hns/hns_roce_hem.c index 4eaaedcc7652..e7c9e30ad2d8 100644 --- a/drivers/infiniband/hw/hns/hns_roce_hem.c +++ b/drivers/infiniband/hw/hns/hns_roce_hem.c @@ -771,9 +771,7 @@ int hns_roce_init_hem_table(struct hns_roce_dev *hr_dev, unsigned long num_bt_l1; =20 num_bt_l1 =3D DIV_ROUND_UP(num_hem, bt_chunk_num); - table->bt_l1 =3D kcalloc(num_bt_l1, - sizeof(*table->bt_l1), - GFP_KERNEL); + table->bt_l1 =3D kzalloc_objs(*table->bt_l1, num_bt_l1); if (!table->bt_l1) goto err_kcalloc_bt_l1; =20 @@ -786,8 +784,7 @@ int hns_roce_init_hem_table(struct hns_roce_dev *hr_dev, =20 if (check_whether_bt_num_2(type, hop_num) || check_whether_bt_num_3(type, hop_num)) { - table->bt_l0 =3D kcalloc(num_bt_l0, sizeof(*table->bt_l0), - GFP_KERNEL); + table->bt_l0 =3D kzalloc_objs(*table->bt_l0, num_bt_l0); if (!table->bt_l0) goto err_kcalloc_bt_l0; =20 diff --git a/drivers/infiniband/hw/hns/hns_roce_qp.c b/drivers/infiniband/h= w/hns/hns_roce_qp.c index 5f7ea6c16644..6a2dff4bd2d0 100644 --- a/drivers/infiniband/hw/hns/hns_roce_qp.c +++ b/drivers/infiniband/hw/hns/hns_roce_qp.c @@ -1023,21 +1023,16 @@ static void free_qp_db(struct hns_roce_dev *hr_dev,= struct hns_roce_qp *hr_qp, static int alloc_kernel_wrid(struct hns_roce_dev *hr_dev, struct hns_roce_qp *hr_qp) { - struct ib_device *ibdev =3D &hr_dev->ib_dev; - u64 *sq_wrid =3D NULL; - u64 *rq_wrid =3D NULL; + u64 *sq_wrid, *rq_wrid =3D NULL; int ret; =20 - sq_wrid =3D kcalloc(hr_qp->sq.wqe_cnt, sizeof(u64), GFP_KERNEL); - if (!sq_wrid) { - ibdev_err(ibdev, "failed to alloc SQ wrid.\n"); + sq_wrid =3D kzalloc_objs(*sq_wrid, hr_qp->sq.wqe_cnt); + if (!sq_wrid) return -ENOMEM; - } =20 if (hr_qp->rq.wqe_cnt) { - rq_wrid =3D kcalloc(hr_qp->rq.wqe_cnt, sizeof(u64), GFP_KERNEL); + rq_wrid =3D kzalloc_objs(*rq_wrid, hr_qp->rq.wqe_cnt); if (!rq_wrid) { - ibdev_err(ibdev, "failed to alloc RQ wrid.\n"); ret =3D -ENOMEM; goto err_sq; } diff --git a/drivers/infiniband/hw/irdma/hw.c b/drivers/infiniband/hw/irdma= /hw.c index f4ae530f56db..6e0466ce83d1 100644 --- a/drivers/infiniband/hw/irdma/hw.c +++ b/drivers/infiniband/hw/irdma/hw.c @@ -1033,7 +1033,7 @@ static int irdma_create_cqp(struct irdma_pci_f *rf) if (!cqp->cqp_requests) return -ENOMEM; =20 - cqp->scratch_array =3D kcalloc(sqsize, sizeof(*cqp->scratch_array), GFP_K= ERNEL); + cqp->scratch_array =3D kzalloc_objs(*cqp->scratch_array, sqsize); if (!cqp->scratch_array) { status =3D -ENOMEM; goto err_scratch; @@ -1942,7 +1942,7 @@ int irdma_rt_init_hw(struct irdma_device *iwdev, if (status) return status; =20 - stats_info.pestat =3D kzalloc(sizeof(*stats_info.pestat), GFP_KERNEL); + stats_info.pestat =3D kzalloc_obj(*stats_info.pestat); if (!stats_info.pestat) { irdma_cleanup_cm_core(&iwdev->cm_core); return -ENOMEM; diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4= /main.c index 64f961e41e1a..73e17b4339eb 100644 --- a/drivers/infiniband/hw/mlx4/main.c +++ b/drivers/infiniband/hw/mlx4/main.c @@ -2161,7 +2161,7 @@ static int __mlx4_ib_alloc_diag_counters(struct mlx4_= ib_dev *ibdev, if (!*pdescs) return -ENOMEM; =20 - *offset =3D kcalloc(num_counters, sizeof(**offset), GFP_KERNEL); + *offset =3D kzalloc_objs(**offset, num_counters); if (!*offset) goto err; =20 diff --git a/drivers/infiniband/hw/mlx5/devx.c b/drivers/infiniband/hw/mlx5= /devx.c index 0066b2738ac8..645ebcc0832d 100644 --- a/drivers/infiniband/hw/mlx5/devx.c +++ b/drivers/infiniband/hw/mlx5/devx.c @@ -1557,7 +1557,7 @@ static int UVERBS_HANDLER(MLX5_IB_METHOD_DEVX_OBJ_CRE= ATE)( if (IS_ERR(cmd_out)) return PTR_ERR(cmd_out); =20 - obj =3D kzalloc(sizeof(struct devx_obj), GFP_KERNEL); + obj =3D kzalloc_obj(*obj); if (!obj) return -ENOMEM; =20 @@ -2158,7 +2158,7 @@ static int UVERBS_HANDLER(MLX5_IB_METHOD_DEVX_SUBSCRI= BE_EVENT)( if (err) goto err; =20 - event_sub =3D kzalloc(sizeof(*event_sub), GFP_KERNEL); + event_sub =3D kzalloc_obj(*event_sub); if (!event_sub) { err =3D -ENOMEM; goto err; @@ -2398,7 +2398,7 @@ static int UVERBS_HANDLER(MLX5_IB_METHOD_DEVX_UMEM_RE= G)( if (err) return err; =20 - obj =3D kzalloc(sizeof(struct devx_umem), GFP_KERNEL); + obj =3D kzalloc_obj(*obj); if (!obj) return -ENOMEM; =20 diff --git a/drivers/infiniband/hw/mlx5/dm.c b/drivers/infiniband/hw/mlx5/d= m.c index 9972f38ba88a..7a6fe4fea3e2 100644 --- a/drivers/infiniband/hw/mlx5/dm.c +++ b/drivers/infiniband/hw/mlx5/dm.c @@ -228,7 +228,7 @@ static int UVERBS_HANDLER(MLX5_IB_METHOD_DM_MAP_OP_ADDR= )( if (!err || err !=3D -ENOENT) goto err_unlock; =20 - op_entry =3D kzalloc(sizeof(*op_entry), GFP_KERNEL); + op_entry =3D kzalloc_obj(*op_entry); if (!op_entry) goto err_unlock; =20 diff --git a/drivers/infiniband/hw/mlx5/fs.c b/drivers/infiniband/hw/mlx5/f= s.c index cbccb0b9ac10..b155baee0017 100644 --- a/drivers/infiniband/hw/mlx5/fs.c +++ b/drivers/infiniband/hw/mlx5/fs.c @@ -2917,7 +2917,7 @@ static int UVERBS_HANDLER(MLX5_IB_METHOD_FLOW_MATCHER= _CREATE)( struct mlx5_ib_flow_matcher *obj; int err; =20 - obj =3D kzalloc(sizeof(struct mlx5_ib_flow_matcher), GFP_KERNEL); + obj =3D kzalloc_obj(*obj); if (!obj) return -ENOMEM; =20 @@ -3017,7 +3017,7 @@ static int UVERBS_HANDLER(MLX5_IB_METHOD_STEERING_ANC= HOR_CREATE)( if (err) return err; =20 - obj =3D kzalloc(sizeof(*obj), GFP_KERNEL); + obj =3D kzalloc_obj(*obj); if (!obj) return -ENOMEM; =20 @@ -3259,7 +3259,7 @@ static int UVERBS_HANDLER(MLX5_IB_METHOD_FLOW_ACTION_= CREATE_PACKET_REFORMAT)( if (!mlx5_ib_flow_action_packet_reformat_valid(mdev, dv_prt, ft_type)) return -EOPNOTSUPP; =20 - maction =3D kzalloc(sizeof(*maction), GFP_KERNEL); + maction =3D kzalloc_obj(*maction); if (!maction) return -ENOMEM; =20 diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5= /main.c index 26ee8e763d5e..7528f0d75802 100644 --- a/drivers/infiniband/hw/mlx5/main.c +++ b/drivers/infiniband/hw/mlx5/main.c @@ -2244,16 +2244,14 @@ static int mlx5_ib_alloc_ucontext(struct ib_ucontex= t *uctx, =20 mutex_init(&bfregi->lock); bfregi->lib_uar_4k =3D lib_uar_4k; - bfregi->count =3D kcalloc(bfregi->total_num_bfregs, sizeof(*bfregi->count= ), - GFP_KERNEL); + bfregi->count =3D kzalloc_objs(*bfregi->count, bfregi->total_num_bfregs); if (!bfregi->count) { err =3D -ENOMEM; goto out_ucap; } =20 - bfregi->sys_pages =3D kcalloc(bfregi->num_sys_pages, - sizeof(*bfregi->sys_pages), - GFP_KERNEL); + bfregi->sys_pages =3D + kzalloc_objs(*bfregi->sys_pages, bfregi->num_sys_pages); if (!bfregi->sys_pages) { err =3D -ENOMEM; goto out_count; diff --git a/drivers/infiniband/hw/mlx5/qos.c b/drivers/infiniband/hw/mlx5/= qos.c index dce92554142a..ab7f5db18c93 100644 --- a/drivers/infiniband/hw/mlx5/qos.c +++ b/drivers/infiniband/hw/mlx5/qos.c @@ -45,7 +45,7 @@ static int UVERBS_HANDLER(MLX5_IB_METHOD_PP_OBJ_ALLOC)( return -EINVAL; =20 dev =3D to_mdev(c->ibucontext.device); - pp_entry =3D kzalloc(sizeof(*pp_entry), GFP_KERNEL); + pp_entry =3D kzalloc_obj(*pp_entry); if (!pp_entry) return -ENOMEM; =20 diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c b/drivers/infiniba= nd/hw/ocrdma/ocrdma_verbs.c index c73d4bbee71f..7383b67e1723 100644 --- a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c +++ b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c @@ -794,7 +794,7 @@ static int ocrdma_build_pbl_tbl(struct ocrdma_dev *dev,= struct ocrdma_hw_mr *mr) void *va; dma_addr_t pa; =20 - mr->pbl_table =3D kzalloc_objs(struct ocrdma_pbl, mr->num_pbls); + mr->pbl_table =3D kzalloc_objs(*mr->pbl_table, mr->num_pbls); =20 if (!mr->pbl_table) return -ENOMEM; @@ -1253,12 +1253,11 @@ static void ocrdma_set_qp_db(struct ocrdma_dev *dev= , struct ocrdma_qp *qp, =20 static int ocrdma_alloc_wr_id_tbl(struct ocrdma_qp *qp) { - qp->wqe_wr_id_tbl =3D - kzalloc_objs(*(qp->wqe_wr_id_tbl), qp->sq.max_cnt); + qp->wqe_wr_id_tbl =3D kzalloc_objs(*qp->wqe_wr_id_tbl, qp->sq.max_cnt); if (qp->wqe_wr_id_tbl =3D=3D NULL) return -ENOMEM; - qp->rqe_wr_id_tbl =3D - kcalloc(qp->rq.max_cnt, sizeof(u64), GFP_KERNEL); + + qp->rqe_wr_id_tbl =3D kzalloc_objs(*qp->rqe_wr_id_tbl, qp->rq.max_cnt); if (qp->rqe_wr_id_tbl =3D=3D NULL) return -ENOMEM; =20 @@ -1788,8 +1787,8 @@ int ocrdma_create_srq(struct ib_srq *ibsrq, struct ib= _srq_init_attr *init_attr, return status; =20 if (!udata) { - srq->rqe_wr_id_tbl =3D kcalloc(srq->rq.max_cnt, sizeof(u64), - GFP_KERNEL); + srq->rqe_wr_id_tbl =3D + kzalloc_objs(*srq->rqe_wr_id_tbl, srq->rq.max_cnt); if (!srq->rqe_wr_id_tbl) { status =3D -ENOMEM; goto arm_err; @@ -2913,7 +2912,7 @@ struct ib_mr *ocrdma_alloc_mr(struct ib_pd *ibpd, enu= m ib_mr_type mr_type, if (!mr) return ERR_PTR(-ENOMEM); =20 - mr->pages =3D kcalloc(max_num_sg, sizeof(u64), GFP_KERNEL); + mr->pages =3D kzalloc_objs(*mr->pages, max_num_sg); if (!mr->pages) { status =3D -ENOMEM; goto pl_err; diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_misc.c b/drivers/infin= iband/hw/vmw_pvrdma/pvrdma_misc.c index 0864ad25b9d2..64ce5cf5fb96 100644 --- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_misc.c +++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_misc.c @@ -65,8 +65,7 @@ int pvrdma_page_dir_init(struct pvrdma_dev *dev, struct p= vrdma_page_dir *pdir, goto err; =20 pdir->ntables =3D PVRDMA_PAGE_DIR_TABLE(npages - 1) + 1; - pdir->tables =3D kcalloc(pdir->ntables, sizeof(*pdir->tables), - GFP_KERNEL); + pdir->tables =3D kzalloc_objs(*pdir->tables, pdir->ntables); if (!pdir->tables) goto err; =20 --- base-commit: 4c97e6bb1f2311be3146d5f999702392fc17f91f change-id: 20260226-complete-alloc-conversion-324aa50d51d0 Best regards, -- =20 Leon Romanovsky