From: Jason Gunthorpe Date: Tue, 12 May 2026 00:09:34 +0000 (-0300) Subject: RDMA/cxgb4: Convert to ib_respond_udata() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=addf681eede57d96a6d45c7649adbad47d9e9371;p=thirdparty%2Fkernel%2Flinux.git RDMA/cxgb4: Convert to ib_respond_udata() These cases carefully work around 32-bit unpadded structures, but the min integrated into ib_respond_udata() handles this automatically. Zero-initialize data that would not have been copied. Signed-off-by: Jason Gunthorpe Signed-off-by: Leon Romanovsky --- diff --git a/drivers/infiniband/hw/cxgb4/cq.c b/drivers/infiniband/hw/cxgb4/cq.c index e31fb9134aa81..47508df4cec02 100644 --- a/drivers/infiniband/hw/cxgb4/cq.c +++ b/drivers/infiniband/hw/cxgb4/cq.c @@ -1115,13 +1115,11 @@ int c4iw_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr, /* communicate to the userspace that * kernel driver supports 64B CQE */ - uresp.flags |= C4IW_64B_CQE; + if (!ucontext->is_32b_cqe) + uresp.flags |= C4IW_64B_CQE; spin_unlock(&ucontext->mmap_lock); - ret = ib_copy_to_udata(udata, &uresp, - ucontext->is_32b_cqe ? - sizeof(uresp) - sizeof(uresp.flags) : - sizeof(uresp)); + ret = ib_respond_udata(udata, uresp); if (ret) goto err_free_mm2; diff --git a/drivers/infiniband/hw/cxgb4/provider.c b/drivers/infiniband/hw/cxgb4/provider.c index a119e8793aef4..0e3827022c63d 100644 --- a/drivers/infiniband/hw/cxgb4/provider.c +++ b/drivers/infiniband/hw/cxgb4/provider.c @@ -80,7 +80,7 @@ static int c4iw_alloc_ucontext(struct ib_ucontext *ucontext, struct ib_device *ibdev = ucontext->device; struct c4iw_ucontext *context = to_c4iw_ucontext(ucontext); struct c4iw_dev *rhp = to_c4iw_dev(ibdev); - struct c4iw_alloc_ucontext_resp uresp; + struct c4iw_alloc_ucontext_resp uresp = {}; int ret = 0; struct c4iw_mm_entry *mm = NULL; @@ -106,8 +106,7 @@ static int c4iw_alloc_ucontext(struct ib_ucontext *ucontext, context->key += PAGE_SIZE; spin_unlock(&context->mmap_lock); - ret = ib_copy_to_udata(udata, &uresp, - sizeof(uresp) - sizeof(uresp.reserved)); + ret = ib_respond_udata(udata, uresp); if (ret) goto err_mm;