diff options
Diffstat (limited to 'net/ipv6/tcp_ipv6.c')
| -rw-r--r-- | net/ipv6/tcp_ipv6.c | 23 | 
1 files changed, 9 insertions, 14 deletions
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index f67d45ff00b4..305870a72352 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c @@ -567,7 +567,7 @@ static struct tcp_md5sig_key *tcp_v6_md5_lookup(const struct sock *sk,  }  static int tcp_v6_parse_md5_keys(struct sock *sk, int optname, -				 char __user *optval, int optlen) +				 sockptr_t optval, int optlen)  {  	struct tcp_md5sig cmd;  	struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&cmd.tcpm_addr; @@ -577,7 +577,7 @@ static int tcp_v6_parse_md5_keys(struct sock *sk, int optname,  	if (optlen < sizeof(cmd))  		return -EINVAL; -	if (copy_from_user(&cmd, optval, sizeof(cmd))) +	if (copy_from_sockptr(&cmd, optval, sizeof(cmd)))  		return -EFAULT;  	if (sin6->sin6_family != AF_INET6) @@ -1811,6 +1811,13 @@ static struct timewait_sock_ops tcp6_timewait_sock_ops = {  	.twsk_destructor = tcp_twsk_destructor,  }; +INDIRECT_CALLABLE_SCOPE void tcp_v6_send_check(struct sock *sk, struct sk_buff *skb) +{ +	struct ipv6_pinfo *np = inet6_sk(sk); + +	__tcp_v6_send_check(skb, &np->saddr, &sk->sk_v6_daddr); +} +  const struct inet_connection_sock_af_ops ipv6_specific = {  	.queue_xmit	   = inet6_csk_xmit,  	.send_check	   = tcp_v6_send_check, @@ -1824,10 +1831,6 @@ const struct inet_connection_sock_af_ops ipv6_specific = {  	.getsockopt	   = ipv6_getsockopt,  	.addr2sockaddr	   = inet6_csk_addr2sockaddr,  	.sockaddr_len	   = sizeof(struct sockaddr_in6), -#ifdef CONFIG_COMPAT -	.compat_setsockopt = compat_ipv6_setsockopt, -	.compat_getsockopt = compat_ipv6_getsockopt, -#endif  	.mtu_reduced	   = tcp_v6_mtu_reduced,  }; @@ -1854,10 +1857,6 @@ static const struct inet_connection_sock_af_ops ipv6_mapped = {  	.getsockopt	   = ipv6_getsockopt,  	.addr2sockaddr	   = inet6_csk_addr2sockaddr,  	.sockaddr_len	   = sizeof(struct sockaddr_in6), -#ifdef CONFIG_COMPAT -	.compat_setsockopt = compat_ipv6_setsockopt, -	.compat_getsockopt = compat_ipv6_getsockopt, -#endif  	.mtu_reduced	   = tcp_v4_mtu_reduced,  }; @@ -2115,10 +2114,6 @@ struct proto tcpv6_prot = {  	.rsk_prot		= &tcp6_request_sock_ops,  	.h.hashinfo		= &tcp_hashinfo,  	.no_autobind		= true, -#ifdef CONFIG_COMPAT -	.compat_setsockopt	= compat_tcp_setsockopt, -	.compat_getsockopt	= compat_tcp_getsockopt, -#endif  	.diag_destroy		= tcp_abort,  };  EXPORT_SYMBOL_GPL(tcpv6_prot);  | 
