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

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

[INET]: Let inet_ctl_sock_create return sock rather than socket.



All upper protocol layers are already use sock internally.

Signed-off-by: default avatarDenis V. Lunev <den@openvz.org>
Acked-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 8258175c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@ extern int inet_getname(struct socket *sock,
extern int			inet_ioctl(struct socket *sock, 
					   unsigned int cmd, unsigned long arg);

extern int			inet_ctl_sock_create(struct socket **sock,
extern int			inet_ctl_sock_create(struct sock **sk,
						     unsigned short family,
						     unsigned short type,
						     unsigned char protocol);
+1 −3
Original line number Diff line number Diff line
@@ -991,7 +991,6 @@ static struct inet_protosw dccp_v4_protosw = {

static int __init dccp_v4_init(void)
{
	struct socket *socket;
	int err = proto_register(&dccp_v4_prot, 1);

	if (err != 0)
@@ -1003,11 +1002,10 @@ static int __init dccp_v4_init(void)

	inet_register_protosw(&dccp_v4_protosw);

	err = inet_ctl_sock_create(&socket, PF_INET,
	err = inet_ctl_sock_create(&dccp_v4_ctl_sk, PF_INET,
				   SOCK_DCCP, IPPROTO_DCCP);
	if (err)
		goto out_unregister_protosw;
	dccp_v4_ctl_sk = socket->sk;
out:
	return err;
out_unregister_protosw:
+1 −3
Original line number Diff line number Diff line
@@ -1173,7 +1173,6 @@ static struct inet_protosw dccp_v6_protosw = {

static int __init dccp_v6_init(void)
{
	struct socket *socket;
	int err = proto_register(&dccp_v6_prot, 1);

	if (err != 0)
@@ -1185,11 +1184,10 @@ static int __init dccp_v6_init(void)

	inet6_register_protosw(&dccp_v6_protosw);

	err = inet_ctl_sock_create(&socket, PF_INET6,
	err = inet_ctl_sock_create(&dccp_v6_ctl_sk, PF_INET6,
				   SOCK_DCCP, IPPROTO_DCCP);
	if (err != 0)
		goto out_unregister_protosw;
	dccp_v6_ctl_sk = socket->sk;
out:
	return err;
out_unregister_protosw:
+7 −5
Original line number Diff line number Diff line
@@ -1250,19 +1250,21 @@ static struct sk_buff *inet_gso_segment(struct sk_buff *skb, int features)
	return segs;
}

int inet_ctl_sock_create(struct socket **sock, unsigned short family,
int inet_ctl_sock_create(struct sock **sk, unsigned short family,
			 unsigned short type, unsigned char protocol)
{
	int rc = sock_create_kern(family, type, protocol, sock);
	struct socket *sock;
	int rc = sock_create_kern(family, type, protocol, &sock);

	if (rc == 0) {
		(*sock)->sk->sk_allocation = GFP_ATOMIC;
		inet_sk((*sock)->sk)->uc_ttl = -1;
		*sk = sock->sk;
		(*sk)->sk_allocation = GFP_ATOMIC;
		inet_sk(*sk)->uc_ttl = -1;
		/*
		 * Unhash it so that IP input processing does not even see it,
		 * we do not wish this socket to see incoming packets.
		 */
		(*sock)->sk->sk_prot->unhash((*sock)->sk);
		(*sk)->sk_prot->unhash(*sk);
	}
	return rc;
}
+1 −3
Original line number Diff line number Diff line
@@ -2490,11 +2490,9 @@ struct proto tcp_prot = {

void __init tcp_v4_init(void)
{
	struct socket *__tcp_socket;
	if (inet_ctl_sock_create(&__tcp_socket, PF_INET, SOCK_RAW,
	if (inet_ctl_sock_create(&tcp_sock, PF_INET, SOCK_RAW,
				 IPPROTO_TCP) < 0)
		panic("Failed to create the TCP control socket.\n");
	tcp_sock = __tcp_socket->sk;
}

EXPORT_SYMBOL(ipv4_specific);
Loading