net: remove compat_sock_common_{get,set}sockopt
authorChristoph Hellwig <hch@lst.de>
Fri, 17 Jul 2020 06:23:14 +0000 (08:23 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 20 Jul 2020 01:16:40 +0000 (18:16 -0700)
Add the compat handling to sock_common_{get,set}sockopt instead,
keyed of in_compat_syscall().  This allow to remove the now unused
->compat_{get,set}sockopt methods from struct proto_ops.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Acked-by: Stefan Schmidt <stefan@datenfreihafen.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 files changed:
include/linux/net.h
include/net/sock.h
net/core/sock.c
net/dccp/ipv4.c
net/dccp/ipv6.c
net/ieee802154/socket.c
net/ipv4/af_inet.c
net/ipv6/af_inet6.c
net/ipv6/ipv6_sockglue.c
net/ipv6/raw.c
net/l2tp/l2tp_ip.c
net/l2tp/l2tp_ip6.c
net/mptcp/protocol.c
net/phonet/socket.c
net/sctp/ipv6.c
net/sctp/protocol.c

index 016a9c5faa3479b968443b1db07c1150e7e3a0f7..858ff1d981540d13255fd5a0306153379c604f15 100644 (file)
@@ -165,12 +165,6 @@ struct proto_ops {
                                      int optname, char __user *optval, unsigned int optlen);
        int             (*getsockopt)(struct socket *sock, int level,
                                      int optname, char __user *optval, int __user *optlen);
-#ifdef CONFIG_COMPAT
-       int             (*compat_setsockopt)(struct socket *sock, int level,
-                                     int optname, char __user *optval, unsigned int optlen);
-       int             (*compat_getsockopt)(struct socket *sock, int level,
-                                     int optname, char __user *optval, int __user *optlen);
-#endif
        void            (*show_fdinfo)(struct seq_file *m, struct socket *sock);
        int             (*sendmsg)   (struct socket *sock, struct msghdr *m,
                                      size_t total_len);
index 4bf8841651486d85e320507c9e459fa6791a5cea..1fd7cf5fc7516cb154f09828e7c97ee64ece66c0 100644 (file)
@@ -1744,10 +1744,6 @@ int sock_common_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
                        int flags);
 int sock_common_setsockopt(struct socket *sock, int level, int optname,
                                  char __user *optval, unsigned int optlen);
-int compat_sock_common_getsockopt(struct socket *sock, int level,
-               int optname, char __user *optval, int __user *optlen);
-int compat_sock_common_setsockopt(struct socket *sock, int level,
-               int optname, char __user *optval, unsigned int optlen);
 
 void sk_common_release(struct sock *sk);
 
index e085df79482520eb1ed18912418f0fecd1e3a38c..018404d176268232cbddd96ad1e60097baeb95a9 100644 (file)
@@ -3199,23 +3199,14 @@ int sock_common_getsockopt(struct socket *sock, int level, int optname,
 {
        struct sock *sk = sock->sk;
 
-       return sk->sk_prot->getsockopt(sk, level, optname, optval, optlen);
-}
-EXPORT_SYMBOL(sock_common_getsockopt);
-
 #ifdef CONFIG_COMPAT
-int compat_sock_common_getsockopt(struct socket *sock, int level, int optname,
-                                 char __user *optval, int __user *optlen)
-{
-       struct sock *sk = sock->sk;
-
-       if (sk->sk_prot->compat_getsockopt != NULL)
+       if (in_compat_syscal() && sk->sk_prot->compat_getsockopt)
                return sk->sk_prot->compat_getsockopt(sk, level, optname,
                                                      optval, optlen);
+#endif
        return sk->sk_prot->getsockopt(sk, level, optname, optval, optlen);
 }
-EXPORT_SYMBOL(compat_sock_common_getsockopt);
-#endif
+EXPORT_SYMBOL(sock_common_getsockopt);
 
 int sock_common_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
                        int flags)
@@ -3240,23 +3231,14 @@ int sock_common_setsockopt(struct socket *sock, int level, int optname,
 {
        struct sock *sk = sock->sk;
 
-       return sk->sk_prot->setsockopt(sk, level, optname, optval, optlen);
-}
-EXPORT_SYMBOL(sock_common_setsockopt);
-
 #ifdef CONFIG_COMPAT
-int compat_sock_common_setsockopt(struct socket *sock, int level, int optname,
-                                 char __user *optval, unsigned int optlen)
-{
-       struct sock *sk = sock->sk;
-
-       if (sk->sk_prot->compat_setsockopt != NULL)
+       if (in_compat_syscall() && sk->sk_prot->compat_setsockopt)
                return sk->sk_prot->compat_setsockopt(sk, level, optname,
                                                      optval, optlen);
+#endif
        return sk->sk_prot->setsockopt(sk, level, optname, optval, optlen);
 }
-EXPORT_SYMBOL(compat_sock_common_setsockopt);
-#endif
+EXPORT_SYMBOL(sock_common_setsockopt);
 
 void sk_common_release(struct sock *sk)
 {
index a7e989919c53071c11c85e490d2265fbf1ece04c..316cc5ac0da72bbebc815ddefcbf315c8999d141 100644 (file)
@@ -999,10 +999,6 @@ static const struct proto_ops inet_dccp_ops = {
        .recvmsg           = sock_common_recvmsg,
        .mmap              = sock_no_mmap,
        .sendpage          = sock_no_sendpage,
-#ifdef CONFIG_COMPAT
-       .compat_setsockopt = compat_sock_common_setsockopt,
-       .compat_getsockopt = compat_sock_common_getsockopt,
-#endif
 };
 
 static struct inet_protosw dccp_v4_protosw = {
index 650187d688519c53ca94c575e167f9803a07b3ad..b50f85a72cd5fcd5ed50a60f43d072f935c57325 100644 (file)
@@ -1083,8 +1083,6 @@ static const struct proto_ops inet6_dccp_ops = {
        .sendpage          = sock_no_sendpage,
 #ifdef CONFIG_COMPAT
        .compat_ioctl      = inet6_compat_ioctl,
-       .compat_setsockopt = compat_sock_common_setsockopt,
-       .compat_getsockopt = compat_sock_common_getsockopt,
 #endif
 };
 
index d93d4531aa9bc5997df13ab6bf606d7f69e512b2..94ae9662133e30ac31daca3672fea24176869822 100644 (file)
@@ -423,10 +423,6 @@ static const struct proto_ops ieee802154_raw_ops = {
        .recvmsg           = sock_common_recvmsg,
        .mmap              = sock_no_mmap,
        .sendpage          = sock_no_sendpage,
-#ifdef CONFIG_COMPAT
-       .compat_setsockopt = compat_sock_common_setsockopt,
-       .compat_getsockopt = compat_sock_common_getsockopt,
-#endif
 };
 
 /* DGRAM Sockets (802.15.4 dataframes) */
@@ -986,10 +982,6 @@ static const struct proto_ops ieee802154_dgram_ops = {
        .recvmsg           = sock_common_recvmsg,
        .mmap              = sock_no_mmap,
        .sendpage          = sock_no_sendpage,
-#ifdef CONFIG_COMPAT
-       .compat_setsockopt = compat_sock_common_setsockopt,
-       .compat_getsockopt = compat_sock_common_getsockopt,
-#endif
 };
 
 /* Create a socket. Initialise the socket, blank the addresses
index ff141d630bdf09d4c1e49b6e5f08fb568921b630..4307503a6f0b41bae108657e0771e10439c58e2d 100644 (file)
@@ -1043,8 +1043,6 @@ const struct proto_ops inet_stream_ops = {
        .sendpage_locked   = tcp_sendpage_locked,
        .peek_len          = tcp_peek_len,
 #ifdef CONFIG_COMPAT
-       .compat_setsockopt = compat_sock_common_setsockopt,
-       .compat_getsockopt = compat_sock_common_getsockopt,
        .compat_ioctl      = inet_compat_ioctl,
 #endif
        .set_rcvlowat      = tcp_set_rcvlowat,
@@ -1073,8 +1071,6 @@ const struct proto_ops inet_dgram_ops = {
        .sendpage          = inet_sendpage,
        .set_peek_off      = sk_set_peek_off,
 #ifdef CONFIG_COMPAT
-       .compat_setsockopt = compat_sock_common_setsockopt,
-       .compat_getsockopt = compat_sock_common_getsockopt,
        .compat_ioctl      = inet_compat_ioctl,
 #endif
 };
@@ -1105,8 +1101,6 @@ static const struct proto_ops inet_sockraw_ops = {
        .mmap              = sock_no_mmap,
        .sendpage          = inet_sendpage,
 #ifdef CONFIG_COMPAT
-       .compat_setsockopt = compat_sock_common_setsockopt,
-       .compat_getsockopt = compat_sock_common_getsockopt,
        .compat_ioctl      = inet_compat_ioctl,
 #endif
 };
index b304b882e0312f3d53bad4551399cfb118367cdd..0306509ab06374e627a79e8851be237baff83852 100644 (file)
@@ -688,8 +688,6 @@ const struct proto_ops inet6_stream_ops = {
        .peek_len          = tcp_peek_len,
 #ifdef CONFIG_COMPAT
        .compat_ioctl      = inet6_compat_ioctl,
-       .compat_setsockopt = compat_sock_common_setsockopt,
-       .compat_getsockopt = compat_sock_common_getsockopt,
 #endif
        .set_rcvlowat      = tcp_set_rcvlowat,
 };
@@ -717,8 +715,6 @@ const struct proto_ops inet6_dgram_ops = {
        .set_peek_off      = sk_set_peek_off,
 #ifdef CONFIG_COMPAT
        .compat_ioctl      = inet6_compat_ioctl,
-       .compat_setsockopt = compat_sock_common_setsockopt,
-       .compat_getsockopt = compat_sock_common_getsockopt,
 #endif
 };
 
index 20576e87a5f7e87b99d6fbd5370771738b3a52e0..6ab44ec2c369da94b2a32a1dd74d420ac9609db3 100644 (file)
@@ -914,12 +914,8 @@ int compat_ipv6_setsockopt(struct sock *sk, int level, int optname,
 {
        int err;
 
-       if (level == SOL_IP && sk->sk_type != SOCK_RAW) {
-               if (udp_prot.compat_setsockopt != NULL)
-                       return udp_prot.compat_setsockopt(sk, level, optname,
-                                                         optval, optlen);
+       if (level == SOL_IP && sk->sk_type != SOCK_RAW)
                return udp_prot.setsockopt(sk, level, optname, optval, optlen);
-       }
 
        if (level != SOL_IPV6)
                return -ENOPROTOOPT;
@@ -1480,12 +1476,8 @@ int compat_ipv6_getsockopt(struct sock *sk, int level, int optname,
 {
        int err;
 
-       if (level == SOL_IP && sk->sk_type != SOCK_RAW) {
-               if (udp_prot.compat_getsockopt != NULL)
-                       return udp_prot.compat_getsockopt(sk, level, optname,
-                                                         optval, optlen);
+       if (level == SOL_IP && sk->sk_type != SOCK_RAW)
                return udp_prot.getsockopt(sk, level, optname, optval, optlen);
-       }
 
        if (level != SOL_IPV6)
                return -ENOPROTOOPT;
index 8ef5a7b30524fda3afe6d9b2290986b751870ee9..e23c6b4617587030d0ec191c21aa6087b18b4397 100644 (file)
@@ -1378,8 +1378,6 @@ const struct proto_ops inet6_sockraw_ops = {
        .sendpage          = sock_no_sendpage,
 #ifdef CONFIG_COMPAT
        .compat_ioctl      = inet6_compat_ioctl,
-       .compat_setsockopt = compat_sock_common_setsockopt,
-       .compat_getsockopt = compat_sock_common_getsockopt,
 #endif
 };
 
index 955662a6dee754478da0f8ac95d41a787339242b..f8d7412cfb3d3768bce397fa498c04f004f2d90f 100644 (file)
@@ -638,10 +638,6 @@ static const struct proto_ops l2tp_ip_ops = {
        .recvmsg           = sock_common_recvmsg,
        .mmap              = sock_no_mmap,
        .sendpage          = sock_no_sendpage,
-#ifdef CONFIG_COMPAT
-       .compat_setsockopt = compat_sock_common_setsockopt,
-       .compat_getsockopt = compat_sock_common_getsockopt,
-#endif
 };
 
 static struct inet_protosw l2tp_ip_protosw = {
index 526ed2c24dd5e0868ffff5c717b9e9372cc2ec09..2cdc0b7a7a43c39f7e2e50ce09124204ab913a9b 100644 (file)
@@ -773,8 +773,6 @@ static const struct proto_ops l2tp_ip6_ops = {
        .sendpage          = sock_no_sendpage,
 #ifdef CONFIG_COMPAT
        .compat_ioctl      = inet6_compat_ioctl,
-       .compat_setsockopt = compat_sock_common_setsockopt,
-       .compat_getsockopt = compat_sock_common_getsockopt,
 #endif
 };
 
index dbe43e0cd734e4704ee57e41ba4a2dae4b561f05..f0b0b503c2628db54c3d69395dafeaf74bf885c0 100644 (file)
@@ -2166,10 +2166,6 @@ static const struct proto_ops mptcp_stream_ops = {
        .recvmsg           = inet_recvmsg,
        .mmap              = sock_no_mmap,
        .sendpage          = inet_sendpage,
-#ifdef CONFIG_COMPAT
-       .compat_setsockopt = compat_sock_common_setsockopt,
-       .compat_getsockopt = compat_sock_common_getsockopt,
-#endif
 };
 
 static struct inet_protosw mptcp_protosw = {
@@ -2222,8 +2218,6 @@ static const struct proto_ops mptcp_v6_stream_ops = {
        .sendpage          = inet_sendpage,
 #ifdef CONFIG_COMPAT
        .compat_ioctl      = inet6_compat_ioctl,
-       .compat_setsockopt = compat_sock_common_setsockopt,
-       .compat_getsockopt = compat_sock_common_getsockopt,
 #endif
 };
 
index 76d499f6af9ab32aa17422ef911497585b6649b7..87c60f83c18061d154b122aca2a12d83095c02e0 100644 (file)
@@ -441,10 +441,6 @@ const struct proto_ops phonet_dgram_ops = {
        .shutdown       = sock_no_shutdown,
        .setsockopt     = sock_no_setsockopt,
        .getsockopt     = sock_no_getsockopt,
-#ifdef CONFIG_COMPAT
-       .compat_setsockopt = sock_no_setsockopt,
-       .compat_getsockopt = sock_no_getsockopt,
-#endif
        .sendmsg        = pn_socket_sendmsg,
        .recvmsg        = sock_common_recvmsg,
        .mmap           = sock_no_mmap,
@@ -466,10 +462,6 @@ const struct proto_ops phonet_stream_ops = {
        .shutdown       = sock_no_shutdown,
        .setsockopt     = sock_common_setsockopt,
        .getsockopt     = sock_common_getsockopt,
-#ifdef CONFIG_COMPAT
-       .compat_setsockopt = compat_sock_common_setsockopt,
-       .compat_getsockopt = compat_sock_common_getsockopt,
-#endif
        .sendmsg        = pn_socket_sendmsg,
        .recvmsg        = sock_common_recvmsg,
        .mmap           = sock_no_mmap,
index ccfa0ab3e7f481f8b2e39a8adb5b15edc49b5a4f..ebda31b7747d08375b8d351f6b725425c8207e6c 100644 (file)
@@ -1033,8 +1033,6 @@ static const struct proto_ops inet6_seqpacket_ops = {
        .mmap              = sock_no_mmap,
 #ifdef CONFIG_COMPAT
        .compat_ioctl      = inet6_compat_ioctl,
-       .compat_setsockopt = compat_sock_common_setsockopt,
-       .compat_getsockopt = compat_sock_common_getsockopt,
 #endif
 };
 
index cde29f3c7fb3c40ee117636fa3b4b7f0a03e4fba..8d25cc464efdf3b9c9ed23c8435b88baf1451d33 100644 (file)
@@ -1036,10 +1036,6 @@ static const struct proto_ops inet_seqpacket_ops = {
        .recvmsg           = inet_recvmsg,
        .mmap              = sock_no_mmap,
        .sendpage          = sock_no_sendpage,
-#ifdef CONFIG_COMPAT
-       .compat_setsockopt = compat_sock_common_setsockopt,
-       .compat_getsockopt = compat_sock_common_getsockopt,
-#endif
 };
 
 /* Registration with AF_INET family.  */