diff options
Diffstat (limited to 'net/ipv6/tcp_ipv6.c')
| -rw-r--r-- | net/ipv6/tcp_ipv6.c | 6 | 
1 files changed, 5 insertions, 1 deletions
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index 0e1509b02cb3..bd44ded7e50c 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c @@ -1420,6 +1420,8 @@ out:  	return NULL;  } +INDIRECT_CALLABLE_DECLARE(struct dst_entry *ipv4_dst_check(struct dst_entry *, +							   u32));  /* The socket must have it's spinlock held when we get   * here, unless it is a TCP_LISTEN socket.   * @@ -1473,7 +1475,8 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)  		sk_mark_napi_id(sk, skb);  		if (dst) {  			if (inet_sk(sk)->rx_dst_ifindex != skb->skb_iif || -			    dst->ops->check(dst, np->rx_dst_cookie) == NULL) { +			    INDIRECT_CALL_1(dst->ops->check, ip6_dst_check, +					    dst, np->rx_dst_cookie) == NULL) {  				dst_release(dst);  				sk->sk_rx_dst = NULL;  			} @@ -2121,6 +2124,7 @@ struct proto tcpv6_prot = {  	.shutdown		= tcp_shutdown,  	.setsockopt		= tcp_setsockopt,  	.getsockopt		= tcp_getsockopt, +	.bpf_bypass_getsockopt	= tcp_bpf_bypass_getsockopt,  	.keepalive		= tcp_set_keepalive,  	.recvmsg		= tcp_recvmsg,  	.sendmsg		= tcp_sendmsg,  | 
