]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
net: Add a struct net parameter to sock_create_kern
authorSowmini Varadhan <sowmini.varadhan@oracle.com>
Thu, 27 Aug 2015 19:54:39 +0000 (15:54 -0400)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Fri, 4 Sep 2015 00:53:02 +0000 (17:53 -0700)
This is long overdue, and is part of cleaning up how we allocate
kernel sockets that don't reference count struct net.

Backport of upstream commit: eeb1bd5c40edb0e2fd925c8535e2fdebdbc5cef2

Orabug: 21437445

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
14 files changed:
drivers/block/drbd/drbd_receiver.c
fs/afs/rxrpc.c
fs/dlm/lowcomms.c
include/linux/net.h
net/bluetooth/rfcomm/core.c
net/ceph/messenger.c
net/ipv4/af_inet.c
net/ipv4/udp_tunnel.c
net/ipv6/ip6_udp_tunnel.c
net/l2tp/l2tp_core.c
net/netfilter/ipvs/ip_vs_sync.c
net/rds/ib.c
net/rxrpc/ar-local.c
net/socket.c

index cee20354ac37b8297f991d65ef693a90153a2f1c..8d86b282cb4c6e9d54811372ab8f7766e4b09a8e 100644 (file)
@@ -598,7 +598,8 @@ static struct socket *drbd_try_connect(struct drbd_connection *connection)
        memcpy(&peer_in6, &connection->peer_addr, peer_addr_len);
 
        what = "sock_create_kern";
-       err = sock_create_kern(((struct sockaddr *)&src_in6)->sa_family,
+       err = sock_create_kern(&init_net,
+                              ((struct sockaddr *)&src_in6)->sa_family,
                               SOCK_STREAM, IPPROTO_TCP, &sock);
        if (err < 0) {
                sock = NULL;
@@ -693,7 +694,8 @@ static int prepare_listen_socket(struct drbd_connection *connection, struct acce
        memcpy(&my_addr, &connection->my_addr, my_addr_len);
 
        what = "sock_create_kern";
-       err = sock_create_kern(((struct sockaddr *)&my_addr)->sa_family,
+       err = sock_create_kern(&init_net,
+                              ((struct sockaddr *)&my_addr)->sa_family,
                               SOCK_STREAM, IPPROTO_TCP, &s_listen);
        if (err) {
                s_listen = NULL;
index 3a57a1b0fb510b8c8167835ca62eb06d0c4b53ca..69486ca408d89b9dea2ed59d217f4b01ca096a34 100644 (file)
@@ -85,7 +85,8 @@ int afs_open_socket(void)
                return -ENOMEM;
        }
 
-       ret = sock_create_kern(AF_RXRPC, SOCK_DGRAM, PF_INET, &socket);
+       ret = sock_create_kern(&init_net, AF_RXRPC, SOCK_DGRAM, PF_INET,
+                              &socket);
        if (ret < 0) {
                destroy_workqueue(afs_async_calls);
                _leave(" = %d [socket]", ret);
index d08e079ea5d3aa37cf685cce89eb00122fe7ba02..754fd6c0b7470bab272b071e6ca6e4969e4e4209 100644 (file)
@@ -921,8 +921,8 @@ static int tcp_accept_from_sock(struct connection *con)
        mutex_unlock(&connections_lock);
 
        memset(&peeraddr, 0, sizeof(peeraddr));
-       result = sock_create_kern(dlm_local_addr[0]->ss_family, SOCK_STREAM,
-                                 IPPROTO_TCP, &newsock);
+       result = sock_create_kern(&init_net, dlm_local_addr[0]->ss_family,
+                                 SOCK_STREAM, IPPROTO_TCP, &newsock);
        if (result < 0)
                return -ENOMEM;
 
@@ -1173,8 +1173,8 @@ static void tcp_connect_to_sock(struct connection *con)
                goto out;
 
        /* Create a socket to communicate with */
-       result = sock_create_kern(dlm_local_addr[0]->ss_family, SOCK_STREAM,
-                                 IPPROTO_TCP, &sock);
+       result = sock_create_kern(&init_net, dlm_local_addr[0]->ss_family,
+                                 SOCK_STREAM, IPPROTO_TCP, &sock);
        if (result < 0)
                goto out_err;
 
@@ -1258,8 +1258,8 @@ static struct socket *tcp_create_listen_sock(struct connection *con,
                addr_len = sizeof(struct sockaddr_in6);
 
        /* Create a socket to communicate with */
-       result = sock_create_kern(dlm_local_addr[0]->ss_family, SOCK_STREAM,
-                                 IPPROTO_TCP, &sock);
+       result = sock_create_kern(&init_net, dlm_local_addr[0]->ss_family,
+                                 SOCK_STREAM, IPPROTO_TCP, &sock);
        if (result < 0) {
                log_print("Can't create listening comms socket");
                goto create_out;
@@ -1365,8 +1365,8 @@ static int sctp_listen_for_all(void)
 
        log_print("Using SCTP for communications");
 
-       result = sock_create_kern(dlm_local_addr[0]->ss_family, SOCK_SEQPACKET,
-                                 IPPROTO_SCTP, &sock);
+       result = sock_create_kern(&init_net, dlm_local_addr[0]->ss_family,
+                                 SOCK_SEQPACKET, IPPROTO_SCTP, &sock);
        if (result < 0) {
                log_print("Can't create comms socket, check SCTP is loaded");
                goto out;
index 738ea48be889e670275616bae5063259ca3d61d9..fc1fdc21e5d3b1759616edeb1c558009312e4bb9 100644 (file)
@@ -208,7 +208,8 @@ void sock_unregister(int family);
 int __sock_create(struct net *net, int family, int type, int proto,
                  struct socket **res, int kern);
 int sock_create(int family, int type, int proto, struct socket **res);
-int sock_create_kern(int family, int type, int proto, struct socket **res);
+int sock_create_kern(struct net *net, int family, int type, int proto,
+                    struct socket **res);
 int sock_create_lite(int family, int type, int proto, struct socket **res);
 void sock_release(struct socket *sock);
 int sock_sendmsg(struct socket *sock, struct msghdr *msg);
index 4fea24275b17a5b3ab4fa614c3982d8cdaed8fee..6b4bbfb8c5655e0c5e7a133a1c40ad232b1ca444 100644 (file)
@@ -200,7 +200,8 @@ static int rfcomm_l2sock_create(struct socket **sock)
 
        BT_DBG("");
 
-       err = sock_create_kern(PF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_L2CAP, sock);
+       err = sock_create_kern(&init_net, PF_BLUETOOTH, SOCK_SEQPACKET,
+                              BTPROTO_L2CAP, sock);
        if (!err) {
                struct sock *sk = (*sock)->sk;
                sk->sk_data_ready   = rfcomm_l2data_ready;
index 967080a9f0436e8575663909572f063ac60440fe..073262fea6ddab4acb4cd128ee402ab54b870552 100644 (file)
@@ -480,8 +480,8 @@ static int ceph_tcp_connect(struct ceph_connection *con)
        int ret;
 
        BUG_ON(con->sock);
-       ret = sock_create_kern(con->peer_addr.in_addr.ss_family, SOCK_STREAM,
-                              IPPROTO_TCP, &sock);
+       ret = sock_create_kern(&init_net, con->peer_addr.in_addr.ss_family,
+                              SOCK_STREAM, IPPROTO_TCP, &sock);
        if (ret)
                return ret;
        sock->sk->sk_allocation = GFP_NOFS;
index 8b47a4d79d040e39e592d3583affb7fec2d19f3d..09f4d024dfe507b72fc1efd620bf60e676de93fd 100644 (file)
@@ -1430,7 +1430,7 @@ int inet_ctl_sock_create(struct sock **sk, unsigned short family,
                         struct net *net)
 {
        struct socket *sock;
-       int rc = sock_create_kern(family, type, protocol, &sock);
+       int rc = sock_create_kern(&init_net, family, type, protocol, &sock);
 
        if (rc == 0) {
                *sk = sock->sk;
index 6bb98cc193c9a1b532b668b34e9b401357ad96e1..4e2837476967e55016147850049d37e754f343d2 100644 (file)
@@ -15,7 +15,7 @@ int udp_sock_create4(struct net *net, struct udp_port_cfg *cfg,
        struct socket *sock = NULL;
        struct sockaddr_in udp_addr;
 
-       err = sock_create_kern(AF_INET, SOCK_DGRAM, 0, &sock);
+       err = sock_create_kern(&init_net, AF_INET, SOCK_DGRAM, 0, &sock);
        if (err < 0)
                goto error;
 
index bba8903e871fabd73c217efb6250eb743f7d66d8..478576b6121439cfa45f6b21a4a7c42558a738d3 100644 (file)
@@ -19,7 +19,7 @@ int udp_sock_create6(struct net *net, struct udp_port_cfg *cfg,
        int err;
        struct socket *sock = NULL;
 
-       err = sock_create_kern(AF_INET6, SOCK_DGRAM, 0, &sock);
+       err = sock_create_kern(&init_net, AF_INET6, SOCK_DGRAM, 0, &sock);
        if (err < 0)
                goto error;
 
index a29a504492af6f2c38607f2c15e123a297d565cd..db155ad30813e4daef2eaf69093dc06fc73e7397 100644 (file)
@@ -1399,8 +1399,8 @@ static int l2tp_tunnel_sock_create(struct net *net,
                if (cfg->local_ip6 && cfg->peer_ip6) {
                        struct sockaddr_l2tpip6 ip6_addr = {0};
 
-                       err = sock_create_kern(AF_INET6, SOCK_DGRAM,
-                                         IPPROTO_L2TP, &sock);
+                       err = sock_create_kern(&init_net, AF_INET6, SOCK_DGRAM,
+                                              IPPROTO_L2TP, &sock);
                        if (err < 0)
                                goto out;
 
@@ -1429,8 +1429,8 @@ static int l2tp_tunnel_sock_create(struct net *net,
                {
                        struct sockaddr_l2tpip ip_addr = {0};
 
-                       err = sock_create_kern(AF_INET, SOCK_DGRAM,
-                                         IPPROTO_L2TP, &sock);
+                       err = sock_create_kern(&init_net, AF_INET, SOCK_DGRAM,
+                                              IPPROTO_L2TP, &sock);
                        if (err < 0)
                                goto out;
 
index 19b9cce6c210c425f3e577a22e0ac8c2e1c71804..12aa2060b12d41144d68e74b0f143b46d856cf1b 100644 (file)
@@ -1458,7 +1458,8 @@ static struct socket *make_send_sock(struct net *net, int id)
        int result;
 
        /* First create a socket move it to right name space later */
-       result = sock_create_kern(PF_INET, SOCK_DGRAM, IPPROTO_UDP, &sock);
+       result = sock_create_kern(&init_net, PF_INET, SOCK_DGRAM, IPPROTO_UDP,
+                                 &sock);
        if (result < 0) {
                pr_err("Error during creation of socket; terminating\n");
                return ERR_PTR(result);
@@ -1518,7 +1519,8 @@ static struct socket *make_receive_sock(struct net *net, int id)
        int result;
 
        /* First create a socket */
-       result = sock_create_kern(PF_INET, SOCK_DGRAM, IPPROTO_UDP, &sock);
+       result = sock_create_kern(&init_net, PF_INET, SOCK_DGRAM, IPPROTO_UDP,
+                                 &sock);
        if (result < 0) {
                pr_err("Error during creation of socket; terminating\n");
                return ERR_PTR(result);
index 3034308c69c3a85a6b793cf9f71e3fc3ed432636..7e6e9100e339b9a1f514b79aadbdb771ede4a65f 100644 (file)
@@ -2626,8 +2626,8 @@ int rds_ib_init(void)
 
        INIT_LIST_HEAD(&rds_ib_devices);
 
-       ret = sock_create_kern(PF_INET, SOCK_STREAM, IPPROTO_TCP,
-                               &rds_ib_inet_socket);
+       ret = sock_create_kern(&init_net, PF_INET, SOCK_STREAM, IPPROTO_TCP,
+                              &rds_ib_inet_socket);
        if (ret < 0) {
                printk(KERN_ERR "RDS/IB: can't create TCP transport socket (%d).\n", -ret);
                goto out;
index ca904ed5400a11bd08e47fea56d0caeb30f0a442..78483b4602bf729229c160b839ca723fe60242f3 100644 (file)
@@ -73,8 +73,8 @@ static int rxrpc_create_local(struct rxrpc_local *local)
        _enter("%p{%d}", local, local->srx.transport_type);
 
        /* create a socket to represent the local endpoint */
-       ret = sock_create_kern(PF_INET, local->srx.transport_type, IPPROTO_UDP,
-                              &local->socket);
+       ret = sock_create_kern(&init_net, PF_INET, local->srx.transport_type,
+                              IPPROTO_UDP, &local->socket);
        if (ret < 0) {
                _leave(" = %d [socket]", ret);
                return ret;
index 884e3299769840c3e05c43f1320ba849a10ad73c..371b20f2012c128acd774a46a76f63e6bd8294ea 100644 (file)
@@ -1213,9 +1213,10 @@ int sock_create(int family, int type, int protocol, struct socket **res)
 }
 EXPORT_SYMBOL(sock_create);
 
-int sock_create_kern(int family, int type, int protocol, struct socket **res)
+int sock_create_kern(struct net *net, int family, int type, int protocol,
+                    struct socket **res)
 {
-       return __sock_create(&init_net, family, type, protocol, res, 1);
+       return __sock_create(net, family, type, protocol, res, 1);
 }
 EXPORT_SYMBOL(sock_create_kern);