netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net] vhost/net: fix heads usage of ubuf_info
@ 2013-03-17 12:46 Michael S. Tsirkin
  2013-03-17 18:29 ` David Miller
  0 siblings, 1 reply; 7+ messages in thread
From: Michael S. Tsirkin @ 2013-03-17 12:46 UTC (permalink / raw)
  To: David S. Miller
  Cc: kvm, netdev, linux-kernel, Nicholas A. Bellinger, virtualization,
	stable, Basil Gor

ubuf info allocator uses guest controlled head as an index,
so a malicious guest could put the same head entry in the ring twice,
and we will get two callbacks on the same value.
To fix use upend_idx which is guaranteed to be unique.

Reported-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Cc: stable@kernel.org
---

Rusty's working on switching to allocating ubufs dynamically
but that's not 3.9 material.
This patch is against latest net master,
needed for 3.9-rc2 and older kernels.

 drivers/vhost/net.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c
index 959b1cd..ec6fb3f 100644
--- a/drivers/vhost/net.c
+++ b/drivers/vhost/net.c
@@ -339,7 +339,8 @@ static void handle_tx(struct vhost_net *net)
 				msg.msg_controllen = 0;
 				ubufs = NULL;
 			} else {
-				struct ubuf_info *ubuf = &vq->ubuf_info[head];
+				struct ubuf_info *ubuf;
+				ubuf = vq->ubuf_info + vq->upend_idx;
 
 				vq->heads[vq->upend_idx].len =
 					VHOST_DMA_IN_PROGRESS;
-- 
MST

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2013-03-21 16:33 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-17 12:46 [PATCH net] vhost/net: fix heads usage of ubuf_info Michael S. Tsirkin
2013-03-17 18:29 ` David Miller
2013-03-17 18:50   ` Michael S. Tsirkin
2013-03-21  6:02   ` Michael S. Tsirkin
2013-03-21 16:23     ` Ben Hutchings
2013-03-21 16:28       ` Michael S. Tsirkin
2013-03-21 16:33         ` Ben Hutchings

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).