On Wed, Jun 05, 2019 at 04:44:23PM -0700, davidri...@chromium.org wrote: > From: David Riley <davidri...@chromium.org> > > After data is copied to the cache entry, atomic_set is used indicate > that the data is the entry is valid without appropriate memory barriers. > Similarly the read side was missing the same memory barries. > > Signed-off-by: David Riley <davidri...@chromium.org> > --- > drivers/gpu/drm/virtio/virtgpu_ioctl.c | 3 +++ > drivers/gpu/drm/virtio/virtgpu_vq.c | 2 ++ > 2 files changed, 5 insertions(+) > > diff --git a/drivers/gpu/drm/virtio/virtgpu_ioctl.c > b/drivers/gpu/drm/virtio/virtgpu_ioctl.c > index 88c1ed57a3c5..502f5f7c2298 100644 > --- a/drivers/gpu/drm/virtio/virtgpu_ioctl.c > +++ b/drivers/gpu/drm/virtio/virtgpu_ioctl.c > @@ -542,6 +542,9 @@ static int virtio_gpu_get_caps_ioctl(struct drm_device > *dev, > if (!ret) > return -EBUSY; > > + /* is_valid check must proceed before copy of the cache entry. */ > + virt_rmb();
I don't think you need virt_rmb() here. This isn't guest <=> host communication, so a normal barrier should do. The other three fixes are queued up for drm-misc-next. cheers, Gerd