IB/uverbs: Do not use uverbs_cmd_mask in the ioctl path
Instead we are now checking the function pointers directly. Get rid of both cases in ioctl and drop the nonsense idea that destroy can fail. Signed-off-by: Jason Gunthorpe <jgg@mellanox.com> Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
This commit is contained in:
Родитель
60e6627f12
Коммит
97202bbe22
|
@ -70,7 +70,7 @@ static int UVERBS_HANDLER(UVERBS_METHOD_CQ_CREATE)(struct ib_device *ib_dev,
|
||||||
struct ib_uverbs_completion_event_file *ev_file = NULL;
|
struct ib_uverbs_completion_event_file *ev_file = NULL;
|
||||||
struct ib_uobject *ev_file_uobj;
|
struct ib_uobject *ev_file_uobj;
|
||||||
|
|
||||||
if (!(ib_dev->uverbs_cmd_mask & 1ULL << IB_USER_VERBS_CMD_CREATE_CQ))
|
if (!ib_dev->create_cq || !ib_dev->destroy_cq)
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
ret = uverbs_copy_from(&attr.comp_vector, attrs,
|
ret = uverbs_copy_from(&attr.comp_vector, attrs,
|
||||||
|
@ -185,9 +185,6 @@ static int UVERBS_HANDLER(UVERBS_METHOD_CQ_DESTROY)(struct ib_device *ib_dev,
|
||||||
|
|
||||||
obj = container_of(uobj, struct ib_ucq_object, uobject);
|
obj = container_of(uobj, struct ib_ucq_object, uobject);
|
||||||
|
|
||||||
if (!(ib_dev->uverbs_cmd_mask & 1ULL << IB_USER_VERBS_CMD_DESTROY_CQ))
|
|
||||||
return -EOPNOTSUPP;
|
|
||||||
|
|
||||||
ret = rdma_explicit_destroy(uobj);
|
ret = rdma_explicit_destroy(uobj);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче