From df80d44d9ef1a586565c9e91bf43ab28002e1a7d Mon Sep 17 00:00:00 2001 From: Jesse Gross Date: Thu, 6 Dec 2012 11:06:06 -0800 Subject: [PATCH] vxlan: Use sk_release_kernel() instead of sock_release(). 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 Signed-off-by: Jesse Gross Acked-by: Kyle Mestery --- 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 137e5d861..3d7260f39 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); } -- 2.43.0