Skip to contentSkip to conversation

Revert "ipv6: Initial skb->dev and skb->protocol in ip6_output"

PATCH In review Chenbo Feng 2 participants 3 messages Jun 9, 2017 – Jun 10, 2017

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Revert "ipv6: Initial skb->dev and skb->protocol in ip6_output"

From: Chenbo Feng <[email protected]>

This reverts commit 97a7a37a7b7b("ipv6: Initial skb->dev and skb->protocol in ip6_output") since it does not handles the skb->dev assignment inside ip6_fragment() code path properly. Need to rework and upload again

Fixes 97a7a37a7b7b("ipv6: Initial skb->dev and skb->protocol in ip6_output")
---
 net/ipv6/ip6_output.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
net/ipv6/ip6_output.c +3 -3
index 02cd44f..bf8a58a 100644
@@ -67,6 +67,9 @@ static int ip6_finish_output2(struct net *net, struct sock *sk, struct sk_buff *
 	struct in6_addr *nexthop;
 	int ret;
 
+	skb->protocol = htons(ETH_P_IPV6);
+	skb->dev = dev;
+
 	if (ipv6_addr_is_multicast(&ipv6_hdr(skb)->daddr)) {
 		struct inet6_dev *idev = ip6_dst_idev(skb_dst(skb));
 
@@ -151,9 +154,6 @@ int ip6_output(struct net *net, struct sock *sk, struct sk_buff *skb)
 	struct net_device *dev = skb_dst(skb)->dev;
 	struct inet6_dev *idev = ip6_dst_idev(skb_dst(skb));
 
-	skb->protocol = htons(ETH_P_IPV6);
-	skb->dev = dev;
-
 	if (unlikely(idev->cnf.disable_ipv6)) {
 		IP6_INC_STATS(net, idev, IPSTATS_MIB_OUTDISCARDS);
 		kfree_skb(skb);
Signature · 1 line
2.7.4
#1 lore raw
Quoted 6 lines · Chenbo Feng

From: Chenbo Feng <[email protected]>

This reverts commit 97a7a37a7b7b("ipv6: Initial skb->dev and skb->protocol in ip6_output") since it does not handles the skb->dev assignment inside ip6_fragment() code path properly. Need to rework and upload again

We can avoid the revert I believe the patch is fine after analysis.

Please submit this followup, thanks ! :

net/ipv6/ip6_output.c +0 -1
index 02cd44f0953900108701895108b2fdaa9f9980e5..0d6f3b6345de26c329ae1d6f25dde652a5452d4b 100644
@@ -869,7 +869,6 @@ int ip6_fragment(struct net *net, struct sock *sk, struct sk_buff *skb,
 	if (skb->sk && dst_allfrag(skb_dst(skb)))
 		sk_nocaps_add(skb->sk, NETIF_F_GSO_MASK);
 
-	skb->dev = skb_dst(skb)->dev;
 	icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu);
 	err = -EMSGSIZE;
 
#2 lore raw
Quoted 19 lines · Eric Dumazet
Quoted 6 lines · Chenbo Feng

From: Chenbo Feng <[email protected]>

This reverts commit 97a7a37a7b7b("ipv6: Initial skb->dev and skb->protocol in ip6_output") since it does not handles the skb->dev assignment inside ip6_fragment() code path properly. Need to rework and upload again

We can avoid the revert I believe the patch is fine after analysis.

Please submit this followup, thanks ! :

net/ipv6/ip6_output.c +0 -0
index 02cd44f0953900108701895108b2fdaa9f9980e5..0d6f3b6345de26c329ae1d6f25dde652a5452d4b 100644

net/ipv6/ip6_output.c int ip6_fragment(struct net *net, struct sock *sk, struct sk_buff *skb, · line 874

Quoted 7 lines
net/ipv6/ip6_output.c +0 -1
@@ -869,7 +869,6 @@ int ip6_fragment(struct net *net, struct sock *sk, struct sk_buff *skb,
  	if (skb->sk && dst_allfrag(skb_dst(skb)))
  		sk_nocaps_add(skb->sk, NETIF_F_GSO_MASK);
 
-	skb->dev = skb_dst(skb)->dev;
  	icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu);
  	err = -EMSGSIZE;
 

Thanks for the help! Patch submitted here: http://patchwork.ozlabs.org/patch/774260/