Merge branch 'kill_sk_protinfo'
authorDavid S. Miller <davem@davemloft.net>
Sun, 28 Jun 2015 23:55:44 +0000 (16:55 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sun, 28 Jun 2015 23:55:44 +0000 (16:55 -0700)
David Miller says:

====================
Get rid of sock->sk_protinfo.

These two patches get rid of the last remaining user of sk_protinfo
(ax25) and then really gets rid of the struct member.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/ax25.h
include/net/sock.h
net/ax25/af_ax25.c
net/ax25/ax25_in.c
net/core/sock.c
net/sctp/socket.c

index 16a923a3a43a8825d167b75025baca0b1b5d741c..e602f8177ebfbf3148bce0734a87ecac1b0eb590 100644 (file)
@@ -13,6 +13,7 @@
 #include <linux/slab.h>
 #include <linux/atomic.h>
 #include <net/neighbour.h>
+#include <net/sock.h>
 
 #define        AX25_T1CLAMPLO                  1
 #define        AX25_T1CLAMPHI                  (30 * HZ)
@@ -246,7 +247,20 @@ typedef struct ax25_cb {
        atomic_t                refcount;
 } ax25_cb;
 
-#define ax25_sk(__sk) ((ax25_cb *)(__sk)->sk_protinfo)
+struct ax25_sock {
+       struct sock             sk;
+       struct ax25_cb          *cb;
+};
+
+static inline struct ax25_sock *ax25_sk(const struct sock *sk)
+{
+       return (struct ax25_sock *) sk;
+}
+
+static inline struct ax25_cb *sk_to_ax25(const struct sock *sk)
+{
+       return ax25_sk(sk)->cb;
+}
 
 #define ax25_for_each(__ax25, list) \
        hlist_for_each_entry(__ax25, list, ax25_node)
index 14d539c040d70dfebaa5dae16312fc48536559a7..05a8c1aea25187c1692efcb1e350bb2c7f75a30b 100644 (file)
@@ -277,7 +277,6 @@ struct cg_proto;
   *    @sk_incoming_cpu: record cpu processing incoming packets
   *    @sk_txhash: computed flow hash for use on transmit
   *    @sk_filter: socket filtering instructions
-  *    @sk_protinfo: private area, net family specific, when not using slab
   *    @sk_timer: sock cleanup timer
   *    @sk_stamp: time stamp of last packet received
   *    @sk_tsflags: SO_TIMESTAMPING socket options
@@ -416,7 +415,6 @@ struct sock {
        const struct cred       *sk_peer_cred;
        long                    sk_rcvtimeo;
        long                    sk_sndtimeo;
-       void                    *sk_protinfo;
        struct timer_list       sk_timer;
        ktime_t                 sk_stamp;
        u16                     sk_tsflags;
index 9c891d0412a298428e7abd306347beee749f5b0d..ae3a47f9d1d5298406ca33900624fe49c9c85719 100644 (file)
@@ -57,7 +57,7 @@ static const struct proto_ops ax25_proto_ops;
 
 static void ax25_free_sock(struct sock *sk)
 {
-       ax25_cb_put(ax25_sk(sk));
+       ax25_cb_put(sk_to_ax25(sk));
 }
 
 /*
@@ -306,7 +306,7 @@ void ax25_destroy_socket(ax25_cb *ax25)
                while ((skb = skb_dequeue(&ax25->sk->sk_receive_queue)) != NULL) {
                        if (skb->sk != ax25->sk) {
                                /* A pending connection */
-                               ax25_cb *sax25 = ax25_sk(skb->sk);
+                               ax25_cb *sax25 = sk_to_ax25(skb->sk);
 
                                /* Queue the unaccepted socket for death */
                                sock_orphan(skb->sk);
@@ -551,7 +551,7 @@ static int ax25_setsockopt(struct socket *sock, int level, int optname,
                return -EFAULT;
 
        lock_sock(sk);
-       ax25 = ax25_sk(sk);
+       ax25 = sk_to_ax25(sk);
 
        switch (optname) {
        case AX25_WINDOW:
@@ -697,7 +697,7 @@ static int ax25_getsockopt(struct socket *sock, int level, int optname,
        length = min_t(unsigned int, maxlen, sizeof(int));
 
        lock_sock(sk);
-       ax25 = ax25_sk(sk);
+       ax25 = sk_to_ax25(sk);
 
        switch (optname) {
        case AX25_WINDOW:
@@ -796,7 +796,7 @@ out:
 static struct proto ax25_proto = {
        .name     = "AX25",
        .owner    = THIS_MODULE,
-       .obj_size = sizeof(struct sock),
+       .obj_size = sizeof(struct ax25_sock),
 };
 
 static int ax25_create(struct net *net, struct socket *sock, int protocol,
@@ -858,7 +858,7 @@ static int ax25_create(struct net *net, struct socket *sock, int protocol,
        if (sk == NULL)
                return -ENOMEM;
 
-       ax25 = sk->sk_protinfo = ax25_create_cb();
+       ax25 = ax25_sk(sk)->cb = ax25_create_cb();
        if (!ax25) {
                sk_free(sk);
                return -ENOMEM;
@@ -910,7 +910,7 @@ struct sock *ax25_make_new(struct sock *osk, struct ax25_dev *ax25_dev)
        sk->sk_state    = TCP_ESTABLISHED;
        sock_copy_flags(sk, osk);
 
-       oax25 = ax25_sk(osk);
+       oax25 = sk_to_ax25(osk);
 
        ax25->modulus = oax25->modulus;
        ax25->backoff = oax25->backoff;
@@ -938,7 +938,7 @@ struct sock *ax25_make_new(struct sock *osk, struct ax25_dev *ax25_dev)
                }
        }
 
-       sk->sk_protinfo = ax25;
+       ax25_sk(sk)->cb = ax25;
        sk->sk_destruct = ax25_free_sock;
        ax25->sk    = sk;
 
@@ -956,7 +956,7 @@ static int ax25_release(struct socket *sock)
        sock_hold(sk);
        sock_orphan(sk);
        lock_sock(sk);
-       ax25 = ax25_sk(sk);
+       ax25 = sk_to_ax25(sk);
 
        if (sk->sk_type == SOCK_SEQPACKET) {
                switch (ax25->state) {
@@ -1066,7 +1066,7 @@ static int ax25_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
 
        lock_sock(sk);
 
-       ax25 = ax25_sk(sk);
+       ax25 = sk_to_ax25(sk);
        if (!sock_flag(sk, SOCK_ZAPPED)) {
                err = -EINVAL;
                goto out;
@@ -1113,7 +1113,7 @@ static int __must_check ax25_connect(struct socket *sock,
        struct sockaddr *uaddr, int addr_len, int flags)
 {
        struct sock *sk = sock->sk;
-       ax25_cb *ax25 = ax25_sk(sk), *ax25t;
+       ax25_cb *ax25 = sk_to_ax25(sk), *ax25t;
        struct full_sockaddr_ax25 *fsa = (struct full_sockaddr_ax25 *)uaddr;
        ax25_digi *digi = NULL;
        int ct = 0, err = 0;
@@ -1394,7 +1394,7 @@ static int ax25_getname(struct socket *sock, struct sockaddr *uaddr,
 
        memset(fsa, 0, sizeof(*fsa));
        lock_sock(sk);
-       ax25 = ax25_sk(sk);
+       ax25 = sk_to_ax25(sk);
 
        if (peer != 0) {
                if (sk->sk_state != TCP_ESTABLISHED) {
@@ -1446,7 +1446,7 @@ static int ax25_sendmsg(struct socket *sock, struct msghdr *msg, size_t len)
                return -EINVAL;
 
        lock_sock(sk);
-       ax25 = ax25_sk(sk);
+       ax25 = sk_to_ax25(sk);
 
        if (sock_flag(sk, SOCK_ZAPPED)) {
                err = -EADDRNOTAVAIL;
@@ -1621,7 +1621,7 @@ static int ax25_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
        if (skb == NULL)
                goto out;
 
-       if (!ax25_sk(sk)->pidincl)
+       if (!sk_to_ax25(sk)->pidincl)
                skb_pull(skb, 1);               /* Remove PID */
 
        skb_reset_transport_header(skb);
@@ -1762,7 +1762,7 @@ static int ax25_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
 
        case SIOCAX25GETINFO:
        case SIOCAX25GETINFOOLD: {
-               ax25_cb *ax25 = ax25_sk(sk);
+               ax25_cb *ax25 = sk_to_ax25(sk);
                struct ax25_info_struct ax25_info;
 
                ax25_info.t1        = ax25->t1   / HZ;
index 29a3687237aa4288ed078e222c80b8fa85021a8f..bb5a0e4e98d9df09ec535a20ea73253817fe64db 100644 (file)
@@ -353,7 +353,7 @@ static int ax25_rcv(struct sk_buff *skb, struct net_device *dev,
                        return 0;
                }
 
-               ax25 = ax25_sk(make);
+               ax25 = sk_to_ax25(make);
                skb_set_owner_r(skb, make);
                skb_queue_head(&sk->sk_receive_queue, skb);
 
index 1e1fe9a68d835983d760d50f9ef6a11309ffcfc1..e4be66fb3bd5e699ecdfcd9d9eb9f15ec3937f56 100644 (file)
@@ -2269,7 +2269,6 @@ static void sock_def_write_space(struct sock *sk)
 
 static void sock_def_destruct(struct sock *sk)
 {
-       kfree(sk->sk_protinfo);
 }
 
 void sk_send_sigurg(struct sock *sk)
index 5f6c4e61325b65822be525d75ebe3bb7357b97e7..1425ec2bbd5ae359a8e0408a89a6da6bb60bd87e 100644 (file)
@@ -2121,12 +2121,6 @@ static int sctp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
        if (sp->subscribe.sctp_data_io_event)
                sctp_ulpevent_read_sndrcvinfo(event, msg);
 
-#if 0
-       /* FIXME: we should be calling IP/IPv6 layers.  */
-       if (sk->sk_protinfo.af_inet.cmsg_flags)
-               ip_cmsg_recv(msg, skb);
-#endif
-
        err = copied;
 
        /* If skb's length exceeds the user's buffer, update the skb and