Commit 604caebc authored by Jason Gunthorpe's avatar Jason Gunthorpe Committed by Leon Romanovsky
Browse files

RDMA: Use ib_copy_validate_udata_in_cm() for zero comp_mask



All of these cases require a 0 comp_mask. Consolidate these into
using ib_copy_validate_udata_in_cm() and remove the open coded
comp_mask test.

Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
Signed-off-by: default avatarLeon Romanovsky <leonro@nvidia.com>
parent d5c8f2f3
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -699,11 +699,11 @@ int efa_create_qp(struct ib_qp *ibqp, struct ib_qp_init_attr *init_attr,
	if (err)
		goto err_out;

	err = ib_copy_validate_udata_in(udata, cmd, driver_qp_type);
	err = ib_copy_validate_udata_in_cm(udata, cmd, driver_qp_type, 0);
	if (err)
		goto err_out;

	if (cmd.comp_mask || !is_reserved_cleared(cmd.reserved_98)) {
	if (!is_reserved_cleared(cmd.reserved_98)) {
		ibdev_dbg(&dev->ibdev,
			  "Incompatible ABI params, unknown fields in udata\n");
		err = -EINVAL;
@@ -1140,11 +1140,11 @@ int efa_create_user_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr,
		goto err_out;
	}

	err = ib_copy_validate_udata_in(udata, cmd, num_sub_cqs);
	err = ib_copy_validate_udata_in_cm(udata, cmd, num_sub_cqs, 0);
	if (err)
		goto err_out;

	if (cmd.comp_mask || !is_reserved_cleared(cmd.reserved_58)) {
	if (!is_reserved_cleared(cmd.reserved_58)) {
		ibdev_dbg(ibdev,
			  "Incompatible ABI params, unknown fields in udata\n");
		err = -EINVAL;
+1 −4
Original line number Diff line number Diff line
@@ -446,13 +446,10 @@ static int mlx4_ib_query_device(struct ib_device *ibdev,
	struct mlx4_clock_params clock_params;

	if (uhw->inlen) {
		err = ib_copy_validate_udata_in(uhw, cmd, reserved);
		err = ib_copy_validate_udata_in_cm(uhw, cmd, reserved, 0);
		if (err)
			return err;

		if (cmd.comp_mask)
			return -EINVAL;

		if (cmd.reserved)
			return -EINVAL;
	}
+6 −7
Original line number Diff line number Diff line
@@ -720,7 +720,7 @@ static int _mlx4_ib_create_qp_rss(struct ib_pd *pd, struct mlx4_ib_qp *qp,
	if (udata->outlen)
		return -EOPNOTSUPP;

	err = ib_copy_validate_udata_in(udata, ucmd, reserved1);
	err = ib_copy_validate_udata_in_cm(udata, ucmd, reserved1, 0);
	if (err) {
		pr_debug("copy failed\n");
		return err;
@@ -729,7 +729,7 @@ static int _mlx4_ib_create_qp_rss(struct ib_pd *pd, struct mlx4_ib_qp *qp,
	if (memchr_inv(ucmd.reserved, 0, sizeof(ucmd.reserved)))
		return -EOPNOTSUPP;

	if (ucmd.comp_mask || ucmd.reserved1)
	if (ucmd.reserved1)
		return -EOPNOTSUPP;

	if (init_attr->qp_type != IB_QPT_RAW_PACKET) {
@@ -866,12 +866,11 @@ static int create_rq(struct ib_pd *pd, struct ib_qp_init_attr *init_attr,

	qp->state = IB_QPS_RESET;

	err = ib_copy_validate_udata_in(udata, wq, comp_mask);
	err = ib_copy_validate_udata_in_cm(udata, wq, comp_mask, 0);
	if (err)
		goto err;

	if (wq.comp_mask || wq.reserved[0] || wq.reserved[1] ||
	    wq.reserved[2]) {
	if (wq.reserved[0] || wq.reserved[1] || wq.reserved[2]) {
		pr_debug("user command isn't supported\n");
		err = -EOPNOTSUPP;
		goto err;
@@ -4235,11 +4234,11 @@ int mlx4_ib_modify_wq(struct ib_wq *ibwq, struct ib_wq_attr *wq_attr,
	enum ib_wq_state cur_state, new_state;
	int err;

	err = ib_copy_validate_udata_in(udata, ucmd, reserved);
	err = ib_copy_validate_udata_in_cm(udata, ucmd, reserved, 0);
	if (err)
		return err;

	if (ucmd.comp_mask || ucmd.reserved)
	if (ucmd.reserved)
		return -EOPNOTSUPP;

	if (wq_attr_mask & IB_WQ_FLAGS)
+2 −2
Original line number Diff line number Diff line
@@ -5611,11 +5611,11 @@ int mlx5_ib_modify_wq(struct ib_wq *wq, struct ib_wq_attr *wq_attr,
	void *rqc;
	void *in;

	err = ib_copy_validate_udata_in(udata, ucmd, reserved);
	err = ib_copy_validate_udata_in_cm(udata, ucmd, reserved, 0);
	if (err)
		return err;

	if (ucmd.comp_mask || ucmd.reserved)
	if (ucmd.reserved)
		return -EOPNOTSUPP;

	inlen = MLX5_ST_SZ_BYTES(modify_rq_in);