Message ID | 20120430053804.GA59677@tuxmaker.boeblingen.de.ibm.com |
---|---|
State | RFC, archived |
Delegated to: | David Miller |
Headers | show |
On Mon, 2012-04-30 at 07:38 +0200, Frank Blaschka wrote: > From: Frank Blaschka <frank.blaschka@de.ibm.com> > > commit 8a83a00b0735190384a348156837918271034144 unconditionally > drops dst reference when skb->dev is set. This causes a regression > with VLAN and the qeth_l3 network driver. qeth_l3 can not get gw > information from the skb coming from the vlan driver. It is only > valid to drop the dst in case of different name spaces. > > Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com> > --- > net/core/dev.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > --- a/net/core/dev.c > +++ b/net/core/dev.c > @@ -1881,8 +1881,8 @@ EXPORT_SYMBOL(netif_device_attach); > #ifdef CONFIG_NET_NS > void skb_set_dev(struct sk_buff *skb, struct net_device *dev) > { > - skb_dst_drop(skb); > if (skb->dev && !net_eq(dev_net(skb->dev), dev_net(dev))) { > + skb_dst_drop(skb); > secpath_reset(skb); > nf_reset(skb); > skb_init_secmark(skb); > You forgot CC Arnd Bergmann <arnd@arndb.de> ? But we do want to do the skb_dst_drop() in dev_forward_skb() Your patch breaks dev_forward_skb() then. But apparently this forward path was alredy broken in Arnd patch... -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, Apr 30, 2012 at 07:51:33AM +0200, Eric Dumazet wrote: > On Mon, 2012-04-30 at 07:38 +0200, Frank Blaschka wrote: > > From: Frank Blaschka <frank.blaschka@de.ibm.com> > > > > commit 8a83a00b0735190384a348156837918271034144 unconditionally > > drops dst reference when skb->dev is set. This causes a regression > > with VLAN and the qeth_l3 network driver. qeth_l3 can not get gw > > information from the skb coming from the vlan driver. It is only > > valid to drop the dst in case of different name spaces. > > > > Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com> > > --- > > net/core/dev.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > --- a/net/core/dev.c > > +++ b/net/core/dev.c > > @@ -1881,8 +1881,8 @@ EXPORT_SYMBOL(netif_device_attach); > > #ifdef CONFIG_NET_NS > > void skb_set_dev(struct sk_buff *skb, struct net_device *dev) > > { > > - skb_dst_drop(skb); > > if (skb->dev && !net_eq(dev_net(skb->dev), dev_net(dev))) { > > + skb_dst_drop(skb); > > secpath_reset(skb); > > nf_reset(skb); > > skb_init_secmark(skb); > > > > You forgot CC Arnd Bergmann <arnd@arndb.de> ? > > But we do want to do the skb_dst_drop() in dev_forward_skb() > > Your patch breaks dev_forward_skb() then. > > But apparently this forward path was alredy broken in Arnd patch... > Hi Eric, do you have and suggestions how to fix this regression? The qeth_l3 driver needs the gw information to address the frame. The way to look at dst works well for the non vlan case and was also working for vlan prior Arnds changes. > > -- > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, Apr 30, 2012 at 07:51:33AM +0200, Eric Dumazet wrote: > On Mon, 2012-04-30 at 07:38 +0200, Frank Blaschka wrote: > > From: Frank Blaschka <frank.blaschka@de.ibm.com> > > > > commit 8a83a00b0735190384a348156837918271034144 unconditionally > > drops dst reference when skb->dev is set. This causes a regression > > with VLAN and the qeth_l3 network driver. qeth_l3 can not get gw > > information from the skb coming from the vlan driver. It is only > > valid to drop the dst in case of different name spaces. > > > > Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com> > > --- > > net/core/dev.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > --- a/net/core/dev.c > > +++ b/net/core/dev.c > > @@ -1881,8 +1881,8 @@ EXPORT_SYMBOL(netif_device_attach); > > #ifdef CONFIG_NET_NS > > void skb_set_dev(struct sk_buff *skb, struct net_device *dev) > > { > > - skb_dst_drop(skb); > > if (skb->dev && !net_eq(dev_net(skb->dev), dev_net(dev))) { > > + skb_dst_drop(skb); > > secpath_reset(skb); > > nf_reset(skb); > > skb_init_secmark(skb); > > > > You forgot CC Arnd Bergmann <arnd@arndb.de> ? > > But we do want to do the skb_dst_drop() in dev_forward_skb() > > Your patch breaks dev_forward_skb() then. If NET_NS is not defined is this broken too? > > But apparently this forward path was alredy broken in Arnd patch... > Ok, until nobody comes up with an other idea I will post a patch to change back the vlan driver (use skb->dev = dev instead of skb_set_dev) next week. > > -- > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, 2012-05-02 at 07:50 +0200, Frank Blaschka wrote: > On Mon, Apr 30, 2012 at 07:51:33AM +0200, Eric Dumazet wrote: > > On Mon, 2012-04-30 at 07:38 +0200, Frank Blaschka wrote: > > > From: Frank Blaschka <frank.blaschka@de.ibm.com> > > > > > > commit 8a83a00b0735190384a348156837918271034144 unconditionally > > > drops dst reference when skb->dev is set. This causes a regression > > > with VLAN and the qeth_l3 network driver. qeth_l3 can not get gw > > > information from the skb coming from the vlan driver. It is only > > > valid to drop the dst in case of different name spaces. > > > > > > Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com> > > > --- > > > net/core/dev.c | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > --- a/net/core/dev.c > > > +++ b/net/core/dev.c > > > @@ -1881,8 +1881,8 @@ EXPORT_SYMBOL(netif_device_attach); > > > #ifdef CONFIG_NET_NS > > > void skb_set_dev(struct sk_buff *skb, struct net_device *dev) > > > { > > > - skb_dst_drop(skb); > > > if (skb->dev && !net_eq(dev_net(skb->dev), dev_net(dev))) { > > > + skb_dst_drop(skb); > > > secpath_reset(skb); > > > nf_reset(skb); > > > skb_init_secmark(skb); > > > > > > > You forgot CC Arnd Bergmann <arnd@arndb.de> ? > > > > But we do want to do the skb_dst_drop() in dev_forward_skb() > > > > Your patch breaks dev_forward_skb() then. > If NET_NS is not defined is this broken too? > > > > But apparently this forward path was alredy broken in Arnd patch... > > > Ok, until nobody comes up with an other idea I will post a patch to > change back the vlan driver (use skb->dev = dev instead of skb_set_dev) > next week. > > If Arnd doesnt care to even reply, we can just revert his buggy patch, instead of trying to understand and fix all issues. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Eric Dumazet <eric.dumazet@gmail.com> Date: Wed, 02 May 2012 08:59:21 +0200 > If Arnd doesnt care to even reply, we can just revert his buggy > patch, instead of trying to understand and fix all issues. Agreed, it's the best sounding solution by far. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thursday 03 May 2012, David Miller wrote: > From: Eric Dumazet <eric.dumazet@gmail.com> > Date: Wed, 02 May 2012 08:59:21 +0200 > > > If Arnd doesnt care to even reply, we can just revert his buggy > > patch, instead of trying to understand and fix all issues. > > Agreed, it's the best sounding solution by far. I've tried to understand what I've done back then but also couldn't remember, so I won't complain when it gets reverted. For all I know I did this because it looked broken back then, but I don't remember a specific way in which it could be exploited to escape a namespace. Arnd -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, May 03, 2012 at 02:28:37AM -0400, David Miller wrote: > From: Eric Dumazet <eric.dumazet@gmail.com> > Date: Wed, 02 May 2012 08:59:21 +0200 > > > If Arnd doesnt care to even reply, we can just revert his buggy > > patch, instead of trying to understand and fix all issues. > > Agreed, it's the best sounding solution by far. Hi Dave, looks like discussion is done and everybody is ok with reverting Arnds patch. Can you revert commit 8a83a00b0735190384a348156837918271034144 ? Thx Fran ? Thx Frank > -- > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, 30 Apr 2012 07:51:33 +0200 Eric Dumazet <eric.dumazet@gmail.com> wrote: > On Mon, 2012-04-30 at 07:38 +0200, Frank Blaschka wrote: > > From: Frank Blaschka <frank.blaschka@de.ibm.com> > > > > commit 8a83a00b0735190384a348156837918271034144 unconditionally > > drops dst reference when skb->dev is set. This causes a regression > > with VLAN and the qeth_l3 network driver. qeth_l3 can not get gw > > information from the skb coming from the vlan driver. It is only > > valid to drop the dst in case of different name spaces. > > > > Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com> > > --- > > net/core/dev.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > --- a/net/core/dev.c > > +++ b/net/core/dev.c > > @@ -1881,8 +1881,8 @@ EXPORT_SYMBOL(netif_device_attach); > > #ifdef CONFIG_NET_NS > > void skb_set_dev(struct sk_buff *skb, struct net_device *dev) > > { > > - skb_dst_drop(skb); > > if (skb->dev && !net_eq(dev_net(skb->dev), dev_net(dev))) { > > + skb_dst_drop(skb); > > secpath_reset(skb); > > nf_reset(skb); > > skb_init_secmark(skb); > > > > You forgot CC Arnd Bergmann <arnd@arndb.de> ? > > But we do want to do the skb_dst_drop() in dev_forward_skb() > > Your patch breaks dev_forward_skb() then. > > But apparently this forward path was alredy broken in Arnd patch... Is this related to why, PMTU discover is broken now over GRE. The simple case of doing a TCP transfer from local host over GRE tunnel hangs. What happens is that skb_dst(skb) is null in ip_tunnel_xmit. Which leads to the MTU not being updated, and the ICMP_FRAG_NEEDED is never sent. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
--- a/net/core/dev.c +++ b/net/core/dev.c @@ -1881,8 +1881,8 @@ EXPORT_SYMBOL(netif_device_attach); #ifdef CONFIG_NET_NS void skb_set_dev(struct sk_buff *skb, struct net_device *dev) { - skb_dst_drop(skb); if (skb->dev && !net_eq(dev_net(skb->dev), dev_net(dev))) { + skb_dst_drop(skb); secpath_reset(skb); nf_reset(skb); skb_init_secmark(skb);