diff options
Diffstat (limited to 'net/ipv6/tcp_ipv6.c')
| -rw-r--r-- | net/ipv6/tcp_ipv6.c | 23 | 
1 files changed, 10 insertions, 13 deletions
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index e8e68a142649..7577e7eb2c97 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c @@ -41,6 +41,7 @@  #include <linux/random.h>  #include <linux/indirect_call_wrapper.h> +#include <net/aligned_data.h>  #include <net/tcp.h>  #include <net/ndisc.h>  #include <net/inet6_hashtables.h> @@ -269,7 +270,7 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr,  	fl6.fl6_sport = inet->inet_sport;  	if (IS_ENABLED(CONFIG_IP_ROUTE_MULTIPATH) && !fl6.fl6_sport)  		fl6.flowi6_flags = FLOWI_FLAG_ANY_SPORT; -	fl6.flowi6_uid = sk->sk_uid; +	fl6.flowi6_uid = sk_uid(sk);  	opt = rcu_dereference_protected(np->opt, lockdep_sock_is_held(sk));  	final_p = fl6_update_dst(&fl6, opt, &final); @@ -835,7 +836,6 @@ static struct dst_entry *tcp_v6_route_req(const struct sock *sk,  struct request_sock_ops tcp6_request_sock_ops __read_mostly = {  	.family		=	AF_INET6,  	.obj_size	=	sizeof(struct tcp6_request_sock), -	.rtx_syn_ack	=	tcp_rtx_synack,  	.send_ack	=	tcp_v6_reqsk_send_ack,  	.destructor	=	tcp_v6_reqsk_destructor,  	.send_reset	=	tcp_v6_send_reset, @@ -868,7 +868,7 @@ static void tcp_v6_send_response(const struct sock *sk, struct sk_buff *skb, u32  				 int oif, int rst, u8 tclass, __be32 label,  				 u32 priority, u32 txhash, struct tcp_key *key)  { -	struct net *net = sk ? sock_net(sk) : dev_net_rcu(skb_dst(skb)->dev); +	struct net *net = sk ? sock_net(sk) : skb_dst_dev_net_rcu(skb);  	unsigned int tot_len = sizeof(struct tcphdr);  	struct sock *ctl_sk = net->ipv6.tcp_sk;  	const struct tcphdr *th = tcp_hdr(skb); @@ -1043,7 +1043,7 @@ static void tcp_v6_send_reset(const struct sock *sk, struct sk_buff *skb,  	if (!sk && !ipv6_unicast_destination(skb))  		return; -	net = sk ? sock_net(sk) : dev_net_rcu(skb_dst(skb)->dev); +	net = sk ? sock_net(sk) : skb_dst_dev_net_rcu(skb);  	/* Invalid TCP option size or twice included auth */  	if (tcp_parse_auth_options(th, &md5_hash_location, &aoh))  		return; @@ -1834,14 +1834,12 @@ lookup:  		}  		refcounted = true;  		nsk = NULL; -		if (!tcp_filter(sk, skb)) { +		if (!tcp_filter(sk, skb, &drop_reason)) {  			th = (const struct tcphdr *)skb->data;  			hdr = ipv6_hdr(skb);  			tcp_v6_fill_cb(skb, hdr, th);  			nsk = tcp_check_req(sk, skb, req, false, &req_stolen,  					    &drop_reason); -		} else { -			drop_reason = SKB_DROP_REASON_SOCKET_FILTER;  		}  		if (!nsk) {  			reqsk_put(req); @@ -1897,10 +1895,9 @@ process:  	nf_reset_ct(skb); -	if (tcp_filter(sk, skb)) { -		drop_reason = SKB_DROP_REASON_SOCKET_FILTER; +	if (tcp_filter(sk, skb, &drop_reason))  		goto discard_and_relse; -	} +  	th = (const struct tcphdr *)skb->data;  	hdr = ipv6_hdr(skb);  	tcp_v6_fill_cb(skb, hdr, th); @@ -2168,7 +2165,7 @@ static void get_openreq6(struct seq_file *seq,  		   jiffies_to_clock_t(ttd),  		   req->num_timeout,  		   from_kuid_munged(seq_user_ns(seq), -				    sock_i_uid(req->rsk_listener)), +				    sk_uid(req->rsk_listener)),  		   0,  /* non standard timer */  		   0, /* open_requests have no inode */  		   0, req); @@ -2234,7 +2231,7 @@ static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i)  		   timer_active,  		   jiffies_delta_to_clock_t(timer_expires - jiffies),  		   icsk->icsk_retransmits, -		   from_kuid_munged(seq_user_ns(seq), sock_i_uid(sp)), +		   from_kuid_munged(seq_user_ns(seq), sk_uid(sp)),  		   icsk->icsk_probes_out,  		   sock_i_ino(sp),  		   refcount_read(&sp->sk_refcnt), sp, @@ -2357,7 +2354,7 @@ struct proto tcpv6_prot = {  	.stream_memory_free	= tcp_stream_memory_free,  	.sockets_allocated	= &tcp_sockets_allocated, -	.memory_allocated	= &tcp_memory_allocated, +	.memory_allocated	= &net_aligned_data.tcp_memory_allocated,  	.per_cpu_fw_alloc	= &tcp_memory_per_cpu_fw_alloc,  	.memory_pressure	= &tcp_memory_pressure,  | 
