RDMA/core: Align write and ioctl checks of QP types
The ioctl flow checks that the user provides only a supported list of QP types, while write flow didn't do it and relied on the driver to check it. Align those flows to fail as early as possible. Link: https://lore.kernel.org/r/20200926102450.2966017-8-leon@kernel.org Reviewed-by: Maor Gottlieb <maorg@mellanox.com> Signed-off-by: Leon Romanovsky <leonro@nvidia.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
This commit is contained in:
parent
8fd3cd2ae5
commit
5807bb3205
@ -1256,8 +1256,21 @@ static int create_qp(struct uverbs_attr_bundle *attrs,
|
|||||||
bool has_sq = true;
|
bool has_sq = true;
|
||||||
struct ib_device *ib_dev;
|
struct ib_device *ib_dev;
|
||||||
|
|
||||||
if (cmd->qp_type == IB_QPT_RAW_PACKET && !capable(CAP_NET_RAW))
|
switch (cmd->qp_type) {
|
||||||
return -EPERM;
|
case IB_QPT_RAW_PACKET:
|
||||||
|
if (!capable(CAP_NET_RAW))
|
||||||
|
return -EPERM;
|
||||||
|
break;
|
||||||
|
case IB_QPT_RC:
|
||||||
|
case IB_QPT_UC:
|
||||||
|
case IB_QPT_UD:
|
||||||
|
case IB_QPT_XRC_INI:
|
||||||
|
case IB_QPT_XRC_TGT:
|
||||||
|
case IB_QPT_DRIVER:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
obj = (struct ib_uqp_object *)uobj_alloc(UVERBS_OBJECT_QP, attrs,
|
obj = (struct ib_uqp_object *)uobj_alloc(UVERBS_OBJECT_QP, attrs,
|
||||||
&ib_dev);
|
&ib_dev);
|
||||||
|
Loading…
Reference in New Issue
Block a user