History

IB/mlx5: Verify that driver supports user flags

Flags sent down from user might not be supported by running driver. This might lead to unwanted bugs. To solve this, added macro to test for unsupported flags.

Yonatan Cohen committed 8 years ago

Commit 2e43bb31 parent 5d6ff1b1 file · +14 −0Browse files

Unified · Split

drivers/infiniband/hw/mlx5/qp.c+14−0
@@ -1728,6 +1728,11 @@ static void configure_requester_scat_cqe(struct mlx5_ib_dev *dev, · 1727 unmodified lines
17281728 MLX5_SET(qpc, qpc, cs_req, MLX5_REQ_SCAT_DATA32_CQE);
17291729 }
17301730
1731+static inline bool check_flags_mask(uint64_t input, uint64_t supported)
1732+{
1733+ return (input & ~supported) == 0;
1734+}
1735+
17311736 static int create_qp_common(struct mlx5_ib_dev *dev, struct ib_pd *pd,
17321737 struct ib_qp_init_attr *init_attr,
17331738 struct ib_udata *udata, struct mlx5_ib_qp *qp)
@@ -1825,6 +1830,15 @@ static int create_qp_common(struct mlx5_ib_dev *dev, struct ib_pd *pd, · 91 unmodified lines
18251830 return -EFAULT;
18261831 }
18271832
1833+ if (!check_flags_mask(ucmd.flags,
1834+ MLX5_QP_FLAG_SIGNATURE |
1835+ MLX5_QP_FLAG_SCATTER_CQE |
1836+ MLX5_QP_FLAG_TUNNEL_OFFLOADS |
1837+ MLX5_QP_FLAG_BFREG_INDEX |
1838+ MLX5_QP_FLAG_TYPE_DCT |
1839+ MLX5_QP_FLAG_TYPE_DCI))
1840+ return -EINVAL;
1841+
18281842 err = get_qp_user_index(to_mucontext(pd->uobject->context),
18291843 &ucmd, udata->inlen, &uidx);
18301844 if (err)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t