]> git.pld-linux.org Git - packages/kernel.git/commitdiff
- fix problems like 'unregister_netdevice: waiting for tap0 to become free. Usage...
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Mon, 3 Jun 2013 08:48:58 +0000 (10:48 +0200)
committerArkadiusz Miśkiewicz <arekm@maven.pl>
Mon, 3 Jun 2013 08:48:58 +0000 (10:48 +0200)
kernel-small_fixes.patch

index a59aaafed08ded01680a955e11a01ac386034fbe..3ccf00006092ea8197583e787111cff06cba7064 100644 (file)
@@ -217,3 +217,49 @@ index ecb6376..90c4dae 100644
  
  #endif /* CONFIG_IRQ_REMAP */
  
+From patchwork Mon Jun  3 08:16:21 2013
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: ipv6: assign rt6_info to inet6_ifaddr in init_loopback
+Date: Sun, 02 Jun 2013 22:16:21 -0000
+From: Gao feng <gaofeng@cn.fujitsu.com>
+X-Patchwork-Id: 248198
+Message-Id: <1370247381-3091-1-git-send-email-gaofeng@cn.fujitsu.com>
+To: davem@davemloft.net, yoshfuji@linux-ipv6.org
+Cc: netdev@vger.kernel.org, jasowang@redhat.com,
+ kumaran.4353@gmail.com, Maruthi.Thotad@ap.sony.com,
+ Gao feng <gaofeng@cn.fujitsu.com>
+
+Commit 25fb6ca4ed9cad72f14f61629b68dc03c0d9713f
+"net IPv6 : Fix broken IPv6 routing table after loopback down-up"
+forgot to assign rt6_info to the inet6_ifaddr.
+When disable the net device, the rt6_info which allocated
+in init_loopback will not be destroied in __ipv6_ifa_notify.
+
+This will trigger the waring message below
+[23527.916091] unregister_netdevice: waiting for tap0 to become free. Usage count = 1
+
+Reported-by: Arkadiusz Miskiewicz <a.miskiewicz@gmail.com>
+Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
+
+---
+net/ipv6/addrconf.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
+index d1b2d80..1bbf744 100644
+--- a/net/ipv6/addrconf.c
++++ b/net/ipv6/addrconf.c
+@@ -2658,8 +2658,10 @@ static void init_loopback(struct net_device *dev)
+                       sp_rt = addrconf_dst_alloc(idev, &sp_ifa->addr, 0);
+                       /* Failure cases are ignored */
+-                      if (!IS_ERR(sp_rt))
++                      if (!IS_ERR(sp_rt)) {
++                              sp_ifa->rt = sp_rt;
+                               ip6_ins_rt(sp_rt);
++                      }
+               }
+               read_unlock_bh(&idev->lock);
+       }
This page took 1.212598 seconds and 4 git commands to generate.