Message ID | 1307934919-4189-1-git-send-email-jasowang@redhat.com |
---|---|
State | Rejected, archived |
Delegated to: | David Miller |
Headers | show |
From: Jason Wang <jasowang@redhat.com> Date: Mon, 13 Jun 2011 11:15:19 +0800 > The calling of sock_put() should be delayed after synchronize_rcu(), > otherwise inconsist data may be seen during packets transmitting. > > Signed-off-by: Jason Wang <jasowang@redhat.com> You're leaking sockets now. This function has to release the socket twice if there is a non-NULL vlan assigned to the queue. Now you're only doing it once in that situation. Which probably fixes your crash, but adds a socket leak. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c index 6696e56..ecdb775 100644 --- a/drivers/net/macvtap.c +++ b/drivers/net/macvtap.c @@ -148,7 +148,6 @@ static void macvtap_put_queue(struct macvtap_queue *q) rcu_assign_pointer(vlan->taps[index], NULL); rcu_assign_pointer(q->vlan, NULL); - sock_put(&q->sk); --vlan->numvtaps; }
The calling of sock_put() should be delayed after synchronize_rcu(), otherwise inconsist data may be seen during packets transmitting. Signed-off-by: Jason Wang <jasowang@redhat.com> --- drivers/net/macvtap.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)