diff options
Diffstat (limited to 'drivers/vhost')
-rw-r--r-- | drivers/vhost/vhost.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c index 5c9c657ab753..750effe0f98b 100644 --- a/drivers/vhost/vhost.c +++ b/drivers/vhost/vhost.c | |||
@@ -1036,7 +1036,12 @@ int vhost_add_used(struct vhost_virtqueue *vq, unsigned int head, int len) | |||
1036 | /* This actually signals the guest, using eventfd. */ | 1036 | /* This actually signals the guest, using eventfd. */ |
1037 | void vhost_signal(struct vhost_dev *dev, struct vhost_virtqueue *vq) | 1037 | void vhost_signal(struct vhost_dev *dev, struct vhost_virtqueue *vq) |
1038 | { | 1038 | { |
1039 | __u16 flags = 0; | 1039 | __u16 flags; |
1040 | /* Flush out used index updates. This is paired | ||
1041 | * with the barrier that the Guest executes when enabling | ||
1042 | * interrupts. */ | ||
1043 | smp_mb(); | ||
1044 | |||
1040 | if (get_user(flags, &vq->avail->flags)) { | 1045 | if (get_user(flags, &vq->avail->flags)) { |
1041 | vq_err(vq, "Failed to get flags"); | 1046 | vq_err(vq, "Failed to get flags"); |
1042 | return; | 1047 | return; |