diff options
author | David S. Miller <davem@davemloft.net> | 2010-05-16 22:26:58 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-05-16 22:26:58 -0700 |
commit | 6811d58fc148c393f80a9f5a9db49d7e75cdc546 (patch) | |
tree | c25d5b0e49ec848943d35f819e748d157ccb492e /drivers/vhost/vhost.c | |
parent | c4949f074332a64baeb2ead6ab9319ca37642f96 (diff) | |
parent | c02db8c6290bb992442fec1407643c94cc414375 (diff) |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts:
include/linux/if_link.h
Diffstat (limited to 'drivers/vhost/vhost.c')
-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) /* This actually signals the guest, using eventfd. */ void vhost_signal(struct vhost_dev *dev, struct vhost_virtqueue *vq) { - __u16 flags = 0; + __u16 flags; + /* Flush out used index updates. This is paired + * with the barrier that the Guest executes when enabling + * interrupts. */ + smp_mb(); + if (get_user(flags, &vq->avail->flags)) { vq_err(vq, "Failed to get flags"); return; |