Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b7c6ba6e authored by Denis V. Lunev's avatar Denis V. Lunev Committed by David S. Miller
Browse files

[NETNS]: Consolidate kernel netlink socket destruction.



Create a specific helper for netlink kernel socket disposal. This just
let the code look better and provides a ground for proper disposal
inside a namespace.

Signed-off-by: default avatarDenis V. Lunev <den@openvz.org>
Tested-by: default avatarAlexey Dobriyan <adobriyan@openvz.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 4f84d82f
Loading
Loading
Loading
Loading
+3 −6
Original line number Diff line number Diff line
@@ -420,8 +420,7 @@ static int __devinit cn_init(void)

	dev->cbdev = cn_queue_alloc_dev("cqueue", dev->nls);
	if (!dev->cbdev) {
		if (dev->nls->sk_socket)
			sock_release(dev->nls->sk_socket);
		netlink_kernel_release(dev->nls);
		return -EINVAL;
	}
	
@@ -431,8 +430,7 @@ static int __devinit cn_init(void)
	if (err) {
		cn_already_initialized = 0;
		cn_queue_free_dev(dev->cbdev);
		if (dev->nls->sk_socket)
			sock_release(dev->nls->sk_socket);
		netlink_kernel_release(dev->nls);
		return -EINVAL;
	}

@@ -447,8 +445,7 @@ static void __devexit cn_fini(void)

	cn_del_callback(&dev->id);
	cn_queue_free_dev(dev->cbdev);
	if (dev->nls->sk_socket)
		sock_release(dev->nls->sk_socket);
	netlink_kernel_release(dev->nls);
}

subsys_initcall(cn_init);
+1 −1
Original line number Diff line number Diff line
@@ -164,7 +164,7 @@ void
scsi_netlink_exit(void)
{
	if (scsi_nl_sock) {
		sock_release(scsi_nl_sock->sk_socket);
		netlink_kernel_release(scsi_nl_sock);
		netlink_unregister_notifier(&scsi_netlink_notifier);
	}

+2 −2
Original line number Diff line number Diff line
@@ -1558,7 +1558,7 @@ static __init int iscsi_transport_init(void)
	return 0;

release_nls:
	sock_release(nls->sk_socket);
	netlink_kernel_release(nls);
unregister_session_class:
	transport_class_unregister(&iscsi_session_class);
unregister_conn_class:
@@ -1573,7 +1573,7 @@ static __init int iscsi_transport_init(void)
static void __exit iscsi_transport_exit(void)
{
	destroy_workqueue(iscsi_eh_timer_workq);
	sock_release(nls->sk_socket);
	netlink_kernel_release(nls);
	transport_class_unregister(&iscsi_connection_class);
	transport_class_unregister(&iscsi_session_class);
	transport_class_unregister(&iscsi_host_class);
+1 −2
Original line number Diff line number Diff line
@@ -237,7 +237,6 @@ int ecryptfs_init_netlink(void)
 */
void ecryptfs_release_netlink(void)
{
	if (ecryptfs_nl_sock && ecryptfs_nl_sock->sk_socket)
		sock_release(ecryptfs_nl_sock->sk_socket);
	netlink_kernel_release(ecryptfs_nl_sock);
	ecryptfs_nl_sock = NULL;
}
+1 −0
Original line number Diff line number Diff line
@@ -178,6 +178,7 @@ extern struct sock *netlink_kernel_create(struct net *net,
					  void (*input)(struct sk_buff *skb),
					  struct mutex *cb_mutex,
					  struct module *module);
extern void netlink_kernel_release(struct sock *sk);
extern int netlink_change_ngroups(struct sock *sk, unsigned int groups);
extern void netlink_clear_multicast_users(struct sock *sk, unsigned int group);
extern void netlink_ack(struct sk_buff *in_skb, struct nlmsghdr *nlh, int err);
Loading