net: Pass kern from net_proto_family.create to sk_alloc
In preparation for changing how struct net is refcounted on kernel sockets pass the knowledge that we are creating a kernel socket from sock_create_kern through to sk_alloc. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
eeb1bd5c40
commit
11aa9c28b4
@@ -1119,14 +1119,15 @@ static struct proto netlink_proto = {
|
||||
};
|
||||
|
||||
static int __netlink_create(struct net *net, struct socket *sock,
|
||||
struct mutex *cb_mutex, int protocol)
|
||||
struct mutex *cb_mutex, int protocol,
|
||||
int kern)
|
||||
{
|
||||
struct sock *sk;
|
||||
struct netlink_sock *nlk;
|
||||
|
||||
sock->ops = &netlink_ops;
|
||||
|
||||
sk = sk_alloc(net, PF_NETLINK, GFP_KERNEL, &netlink_proto);
|
||||
sk = sk_alloc(net, PF_NETLINK, GFP_KERNEL, &netlink_proto, kern);
|
||||
if (!sk)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -1188,7 +1189,7 @@ static int netlink_create(struct net *net, struct socket *sock, int protocol,
|
||||
if (err < 0)
|
||||
goto out;
|
||||
|
||||
err = __netlink_create(net, sock, cb_mutex, protocol);
|
||||
err = __netlink_create(net, sock, cb_mutex, protocol, kern);
|
||||
if (err < 0)
|
||||
goto out_module;
|
||||
|
||||
@@ -2515,14 +2516,12 @@ __netlink_kernel_create(struct net *net, int unit, struct module *module,
|
||||
|
||||
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)
|
||||
if (__netlink_create(&init_net, sock, cb_mutex, unit, 0) < 0)
|
||||
goto out_sock_release_nosk;
|
||||
|
||||
sk = sock->sk;
|
||||
|
Reference in New Issue
Block a user