@@ -4707,17 +4707,9 @@ int mlx5_ib_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
47074707 return - ENOSYS ;
47084708
47094709 if (udata && udata -> inlen ) {
4710- if (udata -> inlen < offsetofend (typeof (ucmd ), ece_options ))
4711- return - EINVAL ;
4712-
4713- if (udata -> inlen > sizeof (ucmd ) &&
4714- !ib_is_udata_cleared (udata , sizeof (ucmd ),
4715- udata -> inlen - sizeof (ucmd )))
4716- return - EOPNOTSUPP ;
4717-
4718- if (ib_copy_from_udata (& ucmd , udata ,
4719- min (udata -> inlen , sizeof (ucmd ))))
4720- return - EFAULT ;
4710+ err = ib_copy_validate_udata_in (udata , ucmd , ece_options );
4711+ if (err )
4712+ return err ;
47214713
47224714 if (ucmd .comp_mask & ~MLX5_IB_MODIFY_QP_OOO_DP ||
47234715 memchr_inv (& ucmd .burst_info .reserved , 0 ,
@@ -5389,25 +5381,11 @@ static int prepare_user_rq(struct ib_pd *pd,
53895381 struct mlx5_ib_dev * dev = to_mdev (pd -> device );
53905382 struct mlx5_ib_create_wq ucmd = {};
53915383 int err ;
5392- size_t required_cmd_sz ;
5393-
5394- required_cmd_sz = offsetofend (struct mlx5_ib_create_wq ,
5395- single_stride_log_num_of_bytes );
5396- if (udata -> inlen < required_cmd_sz ) {
5397- mlx5_ib_dbg (dev , "invalid inlen\n" );
5398- return - EINVAL ;
5399- }
5400-
5401- if (udata -> inlen > sizeof (ucmd ) &&
5402- !ib_is_udata_cleared (udata , sizeof (ucmd ),
5403- udata -> inlen - sizeof (ucmd ))) {
5404- mlx5_ib_dbg (dev , "inlen is not supported\n" );
5405- return - EOPNOTSUPP ;
5406- }
5407-
5408- if (ib_copy_from_udata (& ucmd , udata , min (sizeof (ucmd ), udata -> inlen ))) {
5384+ err = ib_copy_validate_udata_in (udata , ucmd ,
5385+ single_stride_log_num_of_bytes );
5386+ if (err ) {
54095387 mlx5_ib_dbg (dev , "copy failed\n" );
5410- return - EFAULT ;
5388+ return err ;
54115389 }
54125390
54135391 if (ucmd .comp_mask & (~MLX5_IB_CREATE_WQ_STRIDING_RQ )) {
@@ -5626,25 +5604,16 @@ int mlx5_ib_modify_wq(struct ib_wq *wq, struct ib_wq_attr *wq_attr,
56265604 struct mlx5_ib_dev * dev = to_mdev (wq -> device );
56275605 struct mlx5_ib_rwq * rwq = to_mrwq (wq );
56285606 struct mlx5_ib_modify_wq ucmd = {};
5629- size_t required_cmd_sz ;
56305607 int curr_wq_state ;
56315608 int wq_state ;
56325609 int inlen ;
56335610 int err ;
56345611 void * rqc ;
56355612 void * in ;
56365613
5637- required_cmd_sz = offsetofend (struct mlx5_ib_modify_wq , reserved );
5638- if (udata -> inlen < required_cmd_sz )
5639- return - EINVAL ;
5640-
5641- if (udata -> inlen > sizeof (ucmd ) &&
5642- !ib_is_udata_cleared (udata , sizeof (ucmd ),
5643- udata -> inlen - sizeof (ucmd )))
5644- return - EOPNOTSUPP ;
5645-
5646- if (ib_copy_from_udata (& ucmd , udata , min (sizeof (ucmd ), udata -> inlen )))
5647- return - EFAULT ;
5614+ err = ib_copy_validate_udata_in (udata , ucmd , reserved );
5615+ if (err )
5616+ return err ;
56485617
56495618 if (ucmd .comp_mask || ucmd .reserved )
56505619 return - EOPNOTSUPP ;
0 commit comments