forked from mirrors/linux
		
	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
					
				
					 16 changed files with 12 additions and 100 deletions
				
			
		|  | @ -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 a new issue
	
	 Christoph Hellwig
						Christoph Hellwig