Re: [PATCH v11 04/12] vhost: move vdpa group bound check to vhost_vdpa

From: Michael S. Tsirkin

Date: Sat Jan 10 2026 - 18:46:33 EST


On Fri, Jan 09, 2026 at 04:24:22PM +0100, Eugenio Pérez wrote:
> Remove duplication by consolidating these here. This reduces the
> posibility of a parent driver missing them.
>
> Signed-off-by: Eugenio Pérez <eperezma@xxxxxxxxxx>
> ---
> drivers/vdpa/mlx5/net/mlx5_vnet.c | 3 ---
> drivers/vdpa/vdpa_sim/vdpa_sim.c | 6 ------
> drivers/vhost/vdpa.c | 2 +-
> 3 files changed, 1 insertion(+), 10 deletions(-)
>
> diff --git a/drivers/vdpa/mlx5/net/mlx5_vnet.c b/drivers/vdpa/mlx5/net/mlx5_vnet.c
> index ddaa1366704b..44062e9d68f0 100644
> --- a/drivers/vdpa/mlx5/net/mlx5_vnet.c
> +++ b/drivers/vdpa/mlx5/net/mlx5_vnet.c
> @@ -3640,9 +3640,6 @@ static int mlx5_set_group_asid(struct vdpa_device *vdev, u32 group,
> struct mlx5_vdpa_dev *mvdev = to_mvdev(vdev);
> int err = 0;
>
> - if (group >= MLX5_VDPA_NUMVQ_GROUPS)
> - return -EINVAL;
> -
> mvdev->mres.group2asid[group] = asid;
>
> mutex_lock(&mvdev->mres.lock);
> diff --git a/drivers/vdpa/vdpa_sim/vdpa_sim.c b/drivers/vdpa/vdpa_sim/vdpa_sim.c
> index c1c6431950e1..df9c7ddc5d78 100644
> --- a/drivers/vdpa/vdpa_sim/vdpa_sim.c
> +++ b/drivers/vdpa/vdpa_sim/vdpa_sim.c
> @@ -606,12 +606,6 @@ static int vdpasim_set_group_asid(struct vdpa_device *vdpa, unsigned int group,
> struct vhost_iotlb *iommu;
> int i;
>
> - if (group > vdpasim->dev_attr.ngroups)
> - return -EINVAL;
> -

BTW is the original ">" here an off by one error? Should have been >= ?
if yes then this is a kind of bugfix and maybe needs a fixes tag.

> - if (asid >= vdpasim->dev_attr.nas)
> - return -EINVAL;
> -
> iommu = &vdpasim->iommu[asid];
>
> mutex_lock(&vdpasim->mutex);
> diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c
> index 05a481e4c385..9d25b735b43d 100644
> --- a/drivers/vhost/vdpa.c
> +++ b/drivers/vhost/vdpa.c
> @@ -680,7 +680,7 @@ static long vhost_vdpa_vring_ioctl(struct vhost_vdpa *v, unsigned int cmd,
> case VHOST_VDPA_SET_GROUP_ASID:
> if (copy_from_user(&s, argp, sizeof(s)))
> return -EFAULT;
> - if (s.num >= vdpa->nas)
> + if (idx >= vdpa->ngroups || s.num >= vdpa->nas)
> return -EINVAL;
> if (!ops->set_group_asid)
> return -EOPNOTSUPP;
> --
> 2.52.0