Hi all, Today's linux-next merge of the ipsec tree got conflicts in: net/ipv4/ip_vti.c net/ipv6/ip6_vti.c between commit: 4372339efc06 ("net: always use icmp{,v6}_ndo_send from ndo_start_xmit") from the net tree and commits: c7c1abfd6d42 ("vti: fix ipv4 pmtu check to honor ip header df") 4c38255892c0 ("vti6: fix ipv4 pmtu check to honor ip header df") from the ipsec tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc net/ipv4/ip_vti.c index eb207089ece0,613741384490..000000000000 --- a/net/ipv4/ip_vti.c +++ b/net/ipv4/ip_vti.c @@@ -238,8 -238,10 +238,10 @@@ static netdev_tx_t vti_xmit(struct sk_b if (skb->len > mtu) { skb_dst_update_pmtu_no_confirm(skb, mtu); if (skb->protocol == htons(ETH_P_IP)) { + if (!(ip_hdr(skb)->frag_off & htons(IP_DF))) + goto xmit; - icmp_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED, - htonl(mtu)); + icmp_ndo_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED, + htonl(mtu)); } else { if (mtu < IPV6_MIN_MTU) mtu = IPV6_MIN_MTU; diff --cc net/ipv6/ip6_vti.c index f10e7a72ea62,2f0be5ac021c..000000000000 --- a/net/ipv6/ip6_vti.c +++ b/net/ipv6/ip6_vti.c @@@ -521,10 -521,12 +521,12 @@@ vti6_xmit(struct sk_buff *skb, struct n if (mtu < IPV6_MIN_MTU) mtu = IPV6_MIN_MTU; - icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu); + icmpv6_ndo_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu); } else { + if (!(ip_hdr(skb)->frag_off & htons(IP_DF))) + goto xmit; - icmp_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED, - htonl(mtu)); + icmp_ndo_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED, + htonl(mtu)); } err = -EMSGSIZE;
Attachment:
pgp2_PnXxOgPT.pgp
Description: OpenPGP digital signature