if (sock_create_lite(PF_NETLINK, SOCK_DGRAM, unit, &sock))
                return NULL;
-       /*
-        * We have to just have a reference on the net from sk, but don't
-        * get_net it. Besides, we cannot get and then put the net here.
-        * So we create one inside init_net and the move it to net.
-        */
-       if (__netlink_create(&init_net, sock, cb_mutex, unit, 0) < 0)
+
+       if (__netlink_create(net, sock, cb_mutex, unit, 1) < 0)
                goto out_sock_release_nosk;
 
        sk = sock->sk;
-       sk_change_net(sk, net);
 
        if (!cfg || cfg->groups < 32)
                groups = 32;
 void
 netlink_kernel_release(struct sock *sk)
 {
-       sk_release_kernel(sk);
+       if (sk == NULL || sk->sk_socket == NULL)
+               return;
+
+       sock_release(sk->sk_socket);
 }
 EXPORT_SYMBOL(netlink_kernel_release);