On Wed, Mar 31, 2021 at 04:05:12PM +0800, Xie Yongji wrote:
> Use vhost_dev->mutex to protect vhost device iotlb from
> concurrent access.
>
> Fixes: 4c8cf318("vhost: introduce vDPA-based backend")
> Cc: [email protected]
> Signed-off-by: Xie Yongji <[email protected]>
> Acked-by: Jason Wang <[email protected]>
> Reviewed-by: Stefano Garzarella <[email protected]>
I could not figure out whether there's a bug there now.
If yes when is the concurrent access triggered?
> ---
> drivers/vhost/vdpa.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c
> index 3947fbc2d1d5..63b28d3aee7c 100644
> --- a/drivers/vhost/vdpa.c
> +++ b/drivers/vhost/vdpa.c
> @@ -725,9 +725,11 @@ static int vhost_vdpa_process_iotlb_msg(struct vhost_dev
> *dev,
> const struct vdpa_config_ops *ops = vdpa->config;
> int r = 0;
>
> + mutex_lock(&dev->mutex);
> +
> r = vhost_dev_check_owner(dev);
> if (r)
> - return r;
> + goto unlock;
>
> switch (msg->type) {
> case VHOST_IOTLB_UPDATE:
> @@ -748,6 +750,8 @@ static int vhost_vdpa_process_iotlb_msg(struct vhost_dev
> *dev,
> r = -EINVAL;
> break;
> }
> +unlock:
> + mutex_unlock(&dev->mutex);
>
> return r;
> }
> --
> 2.11.0