| .. | .. |
|---|
| 1842 | 1842 | attr->path_mtu = cmd->base.path_mtu; |
|---|
| 1843 | 1843 | if (cmd->base.attr_mask & IB_QP_PATH_MIG_STATE) |
|---|
| 1844 | 1844 | attr->path_mig_state = cmd->base.path_mig_state; |
|---|
| 1845 | | - if (cmd->base.attr_mask & IB_QP_QKEY) |
|---|
| 1845 | + if (cmd->base.attr_mask & IB_QP_QKEY) { |
|---|
| 1846 | + if (cmd->base.qkey & IB_QP_SET_QKEY && !capable(CAP_NET_RAW)) { |
|---|
| 1847 | + ret = -EPERM; |
|---|
| 1848 | + goto release_qp; |
|---|
| 1849 | + } |
|---|
| 1846 | 1850 | attr->qkey = cmd->base.qkey; |
|---|
| 1851 | + } |
|---|
| 1847 | 1852 | if (cmd->base.attr_mask & IB_QP_RQ_PSN) |
|---|
| 1848 | 1853 | attr->rq_psn = cmd->base.rq_psn; |
|---|
| 1849 | 1854 | if (cmd->base.attr_mask & IB_QP_SQ_PSN) |
|---|
| .. | .. |
|---|
| 3773 | 3778 | IB_USER_VERBS_EX_CMD_MODIFY_CQ, |
|---|
| 3774 | 3779 | ib_uverbs_ex_modify_cq, |
|---|
| 3775 | 3780 | UAPI_DEF_WRITE_I(struct ib_uverbs_ex_modify_cq), |
|---|
| 3776 | | - UAPI_DEF_METHOD_NEEDS_FN(create_cq))), |
|---|
| 3781 | + UAPI_DEF_METHOD_NEEDS_FN(modify_cq))), |
|---|
| 3777 | 3782 | |
|---|
| 3778 | 3783 | DECLARE_UVERBS_OBJECT( |
|---|
| 3779 | 3784 | UVERBS_OBJECT_DEVICE, |
|---|