Unverified Commit 5e64f2c7 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!8133 fix CVE-2021-47265

Merge Pull Request from: @ci-robot 
 
PR sync from: Zhengchao Shao <shaozhengchao@huawei.com>
https://mailweb.openeuler.org/hyperkitty/list/kernel@openeuler.org/message/2BN4OIZBTYWJ5CS6DE732USOOPLGT47G/ 
Fix CVE-2021-47265.

Maor Gottlieb (1):
  RDMA: Verify port when creating flow rule

Parav Pandit (1):
  IB/mlx4: Use port iterator and validation APIs


-- 
2.34.1
 
https://gitee.com/src-openeuler/kernel/issues/I9R4GV 
 
Link:https://gitee.com/openeuler/kernel/pulls/8133

 

Reviewed-by: default avatarYue Haibing <yuehaibing@huawei.com>
Signed-off-by: default avatarJialin Zhang <zhangjialin11@huawei.com>
parents c7a6065e bbc594e9
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -3239,6 +3239,11 @@ static int ib_uverbs_ex_create_flow(struct uverbs_attr_bundle *attrs)
		goto err_free_attr;
	}

	if (!rdma_is_port_valid(uobj->context->device, cmd.flow_attr.port)) {
		err = -EINVAL;
		goto err_uobj;
	}

	qp = uobj_get_obj_read(qp, UVERBS_OBJECT_QP, cmd.qp_handle, attrs);
	if (!qp) {
		err = -EINVAL;
+0 −3
Original line number Diff line number Diff line
@@ -1696,9 +1696,6 @@ static struct ib_flow *mlx4_ib_create_flow(struct ib_qp *qp,
	struct mlx4_dev *dev = (to_mdev(qp->device))->dev;
	int is_bonded = mlx4_is_bonded(dev);

	if (flow_attr->port < 1 || flow_attr->port > qp->device->phys_port_cnt)
		return ERR_PTR(-EINVAL);

	if (flow_attr->flags & ~IB_FLOW_ATTR_FLAGS_DONT_TRAP)
		return ERR_PTR(-EOPNOTSUPP);

+2 −2
Original line number Diff line number Diff line
@@ -808,7 +808,7 @@ static void unregister_pkey_tree(struct mlx4_ib_dev *device)

int mlx4_ib_device_register_sysfs(struct mlx4_ib_dev *dev)
{
	int i;
	unsigned int i;
	int ret = 0;

	if (!mlx4_is_master(dev->dev))
@@ -827,7 +827,7 @@ int mlx4_ib_device_register_sysfs(struct mlx4_ib_dev *dev)
		goto err_ports;
	}

	for (i = 1; i <= dev->ib_dev.phys_port_cnt; ++i) {
	rdma_for_each_port(&dev->ib_dev, i) {
		ret = add_port_entries(dev, i);
		if (ret)
			goto err_add_entries;
+2 −3
Original line number Diff line number Diff line
@@ -1194,9 +1194,8 @@ static struct ib_flow *mlx5_ib_create_flow(struct ib_qp *qp,
		goto free_ucmd;
	}

	if (flow_attr->port > dev->num_ports ||
	    (flow_attr->flags &
	     ~(IB_FLOW_ATTR_FLAGS_DONT_TRAP | IB_FLOW_ATTR_FLAGS_EGRESS))) {
	if (flow_attr->flags &
	    ~(IB_FLOW_ATTR_FLAGS_DONT_TRAP | IB_FLOW_ATTR_FLAGS_EGRESS)) {
		err = -EINVAL;
		goto free_ucmd;
	}