[kernel/f16] Add patch to fix ip6_tunnel naming (rhbz 751165)

Josh Boyer jwboyer at fedoraproject.org
Mon Nov 14 18:57:46 UTC 2011


commit 5046e8a2018c5e39a96b769289de739546b9d67b
Author: Josh Boyer <jwboyer at redhat.com>
Date:   Mon Nov 14 13:56:46 2011 -0500

    Add patch to fix ip6_tunnel naming (rhbz 751165)

 ...-copy-parms.name-after-register_netdevice.patch |   76 ++++++++++++++++++++
 kernel.spec                                        |    7 ++
 2 files changed, 83 insertions(+), 0 deletions(-)
---
diff --git a/ip6_tunnel-copy-parms.name-after-register_netdevice.patch b/ip6_tunnel-copy-parms.name-after-register_netdevice.patch
new file mode 100644
index 0000000..d3bb6a2
--- /dev/null
+++ b/ip6_tunnel-copy-parms.name-after-register_netdevice.patch
@@ -0,0 +1,76 @@
+From 731abb9cb27aef6013ce60808a04e04a545f3f4e Mon Sep 17 00:00:00 2001
+From: Josh Boyer <jwboyer at redhat.com>
+Date: Thu, 10 Nov 2011 15:10:23 +0000
+Subject: [PATCH] ip6_tunnel: copy parms.name after register_netdevice
+
+Commit 1c5cae815d removed an explicit call to dev_alloc_name in ip6_tnl_create
+because register_netdevice will now create a valid name.  This works for the
+net_device itself.
+
+However the tunnel keeps a copy of the name in the parms structure for the
+ip6_tnl associated with the tunnel.  parms.name is set by copying the net_device
+name in ip6_tnl_dev_init_gen.  That function is called from ip6_tnl_dev_init in
+ip6_tnl_create, but it is done before register_netdevice is called so the name
+is set to a bogus value in the parms.name structure.
+
+This shows up if you do a simple tunnel add, followed by a tunnel show:
+
+[root at localhost ~]# ip -6 tunnel add remote fec0::100 local fec0::200
+[root at localhost ~]# ip -6 tunnel show
+ip6tnl0: ipv6/ipv6 remote :: local :: encaplimit 0 hoplimit 0 tclass 0x00 flowlabel 0x00000 (flowinfo 0x00000000)
+ip6tnl%d: ipv6/ipv6 remote fec0::100 local fec0::200 encaplimit 4 hoplimit 64 tclass 0x00 flowlabel 0x00000 (flowinfo 0x00000000)
+[root at localhost ~]#
+
+Fix this by moving the strcpy out of ip6_tnl_dev_init_gen, and calling it after
+register_netdevice has successfully returned.
+
+Cc: stable at vger.kernel.org
+Signed-off-by: Josh Boyer <jwboyer at redhat.com>
+Signed-off-by: David S. Miller <davem at davemloft.net>
+---
+ net/ipv6/ip6_tunnel.c |    8 +++++++-
+ 1 files changed, 7 insertions(+), 1 deletions(-)
+
+diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c
+index bdc15c9..4e2e9ff 100644
+--- a/net/ipv6/ip6_tunnel.c
++++ b/net/ipv6/ip6_tunnel.c
+@@ -289,6 +289,8 @@ static struct ip6_tnl *ip6_tnl_create(struct net *net, struct ip6_tnl_parm *p)
+ 	if ((err = register_netdevice(dev)) < 0)
+ 		goto failed_free;
+ 
++	strcpy(t->parms.name, dev->name);
++
+ 	dev_hold(dev);
+ 	ip6_tnl_link(ip6n, t);
+ 	return t;
+@@ -1407,7 +1409,6 @@ ip6_tnl_dev_init_gen(struct net_device *dev)
+ 	struct ip6_tnl *t = netdev_priv(dev);
+ 
+ 	t->dev = dev;
+-	strcpy(t->parms.name, dev->name);
+ 	dev->tstats = alloc_percpu(struct pcpu_tstats);
+ 	if (!dev->tstats)
+ 		return -ENOMEM;
+@@ -1487,6 +1488,7 @@ static void __net_exit ip6_tnl_destroy_tunnels(struct ip6_tnl_net *ip6n)
+ static int __net_init ip6_tnl_init_net(struct net *net)
+ {
+ 	struct ip6_tnl_net *ip6n = net_generic(net, ip6_tnl_net_id);
++	struct ip6_tnl *t = NULL;
+ 	int err;
+ 
+ 	ip6n->tnls[0] = ip6n->tnls_wc;
+@@ -1507,6 +1509,10 @@ static int __net_init ip6_tnl_init_net(struct net *net)
+ 	err = register_netdev(ip6n->fb_tnl_dev);
+ 	if (err < 0)
+ 		goto err_register;
++
++	t = netdev_priv(ip6n->fb_tnl_dev);
++
++	strcpy(t->parms.name, ip6n->fb_tnl_dev->name);
+ 	return 0;
+ 
+ err_register:
+-- 
+1.7.6.2
+
diff --git a/kernel.spec b/kernel.spec
index d7ea3cb..1b7cbaa 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -747,6 +747,9 @@ Patch13003: efi-dont-map-boot-services-on-32bit.patch
 
 Patch13009: hvcs_pi_buf_alloc.patch
 
+#rhbz 751165
+Patch13010: ip6_tunnel-copy-parms.name-after-register_netdevice.patch
+
 Patch20000: utrace.patch
 
 # Flattened devicetree support
@@ -1404,6 +1407,9 @@ ApplyPatch efi-dont-map-boot-services-on-32bit.patch
 
 ApplyPatch hvcs_pi_buf_alloc.patch
 
+#rhbz 751165
+ApplyPatch ip6_tunnel-copy-parms.name-after-register_netdevice.patch
+
 ApplyPatch media-dib0700-correct-error-message.patch
 
 # utrace.
@@ -2138,6 +2144,7 @@ fi
 * Mon Nov 14 2011 Josh Boyer <jwboyer at redhat.com>
 - Patch from Joshua Roys to add rtl8192* to modules.networking (rhbz 753645)
 - Add patch for wacom tablets for Bastien Nocera (upstream 3797ef6b6)
+- Add patch to fix ip6_tunnel naming (rhbz 751165)
 
 * Mon Nov 14 2011 Josh Boyer <jwboyer at redhat.com> 3.1.1-2
 - CVE-2011-4131: nfs4_getfacl decoding kernel oops (rhbz 753236)


More information about the scm-commits mailing list