[ovs-dev] [PATCH 1/2] vxlan: Use sk_release_kernel() instead of sock_release().

Jesse Gross jesse at nicira.com
Thu Dec 6 19:11:29 UTC 2012


A socket that is created using sock_create_kern() and then switched
to a namespace using sk_change_net() should be released using
sk_release_kernel() instead of sock_release().  This is because
sk_change_net() has already released a reference to the namespace
and we shouldn't try to release it again later.

Cc: Kyle Mestery <kmestery at cisco.com>
Signed-off-by: Jesse Gross <jesse at nicira.com>
---
 datapath/vport-vxlan.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/datapath/vport-vxlan.c b/datapath/vport-vxlan.c
index 137e5d8..3d7260f 100644
--- a/datapath/vport-vxlan.c
+++ b/datapath/vport-vxlan.c
@@ -222,7 +222,7 @@ static int vxlan_socket_init(struct vxlan_port *vxlan_port, struct net *net)
 	return 0;
 
 error_sock:
-	sock_release(vxlan_port->vxlan_rcv_socket);
+	sk_release_kernel(vxlan_port->vxlan_rcv_socket->sk);
 error:
 	pr_warn("cannot register vxlan protocol handler\n");
 	return err;
@@ -234,7 +234,7 @@ static void vxlan_tunnel_release(struct vxlan_port *vxlan_port)
 
 	if (vxlan_port->count == 0) {
 		/* Release old socket */
-		sock_release(vxlan_port->vxlan_rcv_socket);
+		sk_release_kernel(vxlan_port->vxlan_rcv_socket->sk);
 		list_del(&vxlan_port->list);
 		kfree(vxlan_port);
 	}
-- 
1.7.9.5




More information about the dev mailing list