From: David S. Miller Date: Tue, 14 Dec 2010 19:33:23 +0000 (-0800) Subject: Merge branch 'vhost-net-next' of git://git.kernel.org/pub/scm/linux/kernel/git/mst... X-Git-Tag: v2.6.38-rc1~476^2~168 X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-kernel.git;a=commitdiff_plain;h=9fe146aef44afe5ec677d8150b6ae94e09b773f7;hp=-c Merge branch 'vhost-net-next' of git://git./linux/kernel/git/mst/vhost --- 9fe146aef44afe5ec677d8150b6ae94e09b773f7 diff --combined drivers/vhost/net.c index f442668a1e52,14fc189ac0a8..9b3ca103135f --- a/drivers/vhost/net.c +++ b/drivers/vhost/net.c @@@ -10,7 -10,6 +10,6 @@@ #include #include #include - #include #include #include #include @@@ -129,9 -128,8 +128,9 @@@ static void handle_tx(struct vhost_net size_t hdr_size; struct socket *sock; - sock = rcu_dereference_check(vq->private_data, - lockdep_is_held(&vq->mutex)); + /* TODO: check that we are running from vhost_worker? + * Not sure it's worth it, it's straight-forward enough. */ + sock = rcu_dereference_check(vq->private_data, 1); if (!sock) return; @@@ -143,7 -141,6 +142,6 @@@ return; } - use_mm(net->dev.mm); mutex_lock(&vq->mutex); vhost_disable_notify(vq); @@@ -208,7 -205,6 +206,6 @@@ } mutex_unlock(&vq->mutex); - unuse_mm(net->dev.mm); } static int peek_head_len(struct sock *sk) @@@ -313,7 -309,6 +310,6 @@@ static void handle_rx_big(struct vhost_ if (!sock || skb_queue_empty(&sock->sk->sk_receive_queue)) return; - use_mm(net->dev.mm); mutex_lock(&vq->mutex); vhost_disable_notify(vq); hdr_size = vq->vhost_hlen; @@@ -392,7 -387,6 +388,6 @@@ } mutex_unlock(&vq->mutex); - unuse_mm(net->dev.mm); } /* Expects to be always run from workqueue - which acts as @@@ -424,7 -418,6 +419,6 @@@ static void handle_rx_mergeable(struct if (!sock || skb_queue_empty(&sock->sk->sk_receive_queue)) return; - use_mm(net->dev.mm); mutex_lock(&vq->mutex); vhost_disable_notify(vq); vhost_hlen = vq->vhost_hlen; @@@ -459,7 -452,7 +453,7 @@@ move_iovec_hdr(vq->iov, vq->hdr, vhost_hlen, in); else /* Copy the header for use in VIRTIO_NET_F_MRG_RXBUF: - * needed because sendmsg can modify msg_iov. */ + * needed because recvmsg can modify msg_iov. */ copy_iovec_hdr(vq->iov, vq->hdr, sock_hlen, in); msg.msg_iovlen = in; err = sock->ops->recvmsg(NULL, sock, &msg, @@@ -501,7 -494,6 +495,6 @@@ } mutex_unlock(&vq->mutex); - unuse_mm(net->dev.mm); } static void handle_rx(struct vhost_net *net)