]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
RDMA/core: Fix user CQ creation for drivers without create_cq
authorMichael Margolin <mrgolin@amazon.com>
Thu, 16 Apr 2026 20:14:08 +0000 (20:14 +0000)
committerJason Gunthorpe <jgg@nvidia.com>
Fri, 17 Apr 2026 15:16:00 +0000 (12:16 -0300)
CQ creation is failing for drivers that only implement create_user_cq
(e.g. EFA), when buffer isn't provided by userspace. This because of a
leftover check that requires create_cq existence in such case.

Remove the create_cq existence check from the no-buffer path. The
buffer is optional and drivers that handle their own memory should work
through create_user_cq regardless.

Fixes: 584ec74748e6 ("RDMA/core: Prepare create CQ path for API unification")
Link: https://patch.msgid.link/r/20260416201408.13980-1-mrgolin@amazon.com
Signed-off-by: Michael Margolin <mrgolin@amazon.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/core/uverbs_std_types_cq.c

index d2c8f71f934cc8e0aa618f8c97dbeb7c20df69d2..79b51f60ce2a37be53a84e8feaf7eea05bab118a 100644 (file)
@@ -172,8 +172,7 @@ static int UVERBS_HANDLER(UVERBS_METHOD_CQ_CREATE)(
                }
                umem = &umem_dmabuf->umem;
        } else if (uverbs_attr_is_valid(attrs, UVERBS_ATTR_CREATE_CQ_BUFFER_OFFSET) ||
-                  uverbs_attr_is_valid(attrs, UVERBS_ATTR_CREATE_CQ_BUFFER_LENGTH) ||
-                  !ib_dev->ops.create_cq) {
+                  uverbs_attr_is_valid(attrs, UVERBS_ATTR_CREATE_CQ_BUFFER_LENGTH)) {
                ret = -EINVAL;
                goto err_event_file;
        }