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@cisco.com>
Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Kyle Mestery <kmestery@cisco.com>
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;
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);
}