net: remove compat_sock_common_{get,set}sockopt
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>
This commit is contained in:
parent
4d295e5461
commit
8c918ffbba
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -3199,24 +3199,15 @@ int sock_common_getsockopt(struct socket *sock, int level, int optname,
|
|||
{
|
||||
struct sock *sk = sock->sk;
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
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(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)
|
||||
return sk->sk_prot->compat_getsockopt(sk, level, optname,
|
||||
optval, optlen);
|
||||
return sk->sk_prot->getsockopt(sk, level, optname, optval, optlen);
|
||||
}
|
||||
EXPORT_SYMBOL(compat_sock_common_getsockopt);
|
||||
#endif
|
||||
|
||||
int sock_common_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
|
||||
int flags)
|
||||
{
|
||||
|
@ -3240,24 +3231,15 @@ int sock_common_setsockopt(struct socket *sock, int level, int optname,
|
|||
{
|
||||
struct sock *sk = sock->sk;
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
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(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)
|
||||
return sk->sk_prot->compat_setsockopt(sk, level, optname,
|
||||
optval, optlen);
|
||||
return sk->sk_prot->setsockopt(sk, level, optname, optval, optlen);
|
||||
}
|
||||
EXPORT_SYMBOL(compat_sock_common_setsockopt);
|
||||
#endif
|
||||
|
||||
void sk_common_release(struct sock *sk)
|
||||
{
|
||||
if (sk->sk_prot->destroy)
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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
|
||||
};
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
};
|
||||
|
|
|
@ -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
|
||||
};
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
};
|
||||
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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
|
||||
};
|
||||
|
||||
|
|
|
@ -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
|
||||
};
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
};
|
||||
|
||||
|
|
|
@ -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. */
|
||||
|
|
Loading…
Reference in New Issue