diff options
Diffstat (limited to 'net/ipv4/af_inet.c')
| -rw-r--r-- | net/ipv4/af_inet.c | 9 | 
1 files changed, 6 insertions, 3 deletions
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c index 602d40f43687..6b1fc6e4278e 100644 --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c @@ -689,11 +689,12 @@ EXPORT_SYMBOL(inet_stream_connect);   *	Accept a pending connection. The TCP layer now gives BSD semantics.   */ -int inet_accept(struct socket *sock, struct socket *newsock, int flags) +int inet_accept(struct socket *sock, struct socket *newsock, int flags, +		bool kern)  {  	struct sock *sk1 = sock->sk;  	int err = -EINVAL; -	struct sock *sk2 = sk1->sk_prot->accept(sk1, flags, &err); +	struct sock *sk2 = sk1->sk_prot->accept(sk1, flags, &err, kern);  	if (!sk2)  		goto do_err; @@ -1487,8 +1488,10 @@ int inet_gro_complete(struct sk_buff *skb, int nhoff)  	int proto = iph->protocol;  	int err = -ENOSYS; -	if (skb->encapsulation) +	if (skb->encapsulation) { +		skb_set_inner_protocol(skb, cpu_to_be16(ETH_P_IP));  		skb_set_inner_network_header(skb, nhoff); +	}  	csum_replace2(&iph->check, iph->tot_len, newlen);  	iph->tot_len = newlen;  | 
