In ipv6_add_dev, when addrconf_sysctl_register fails, we do not clean up the dev_snmp6 entry that we have already registered for this device.
It is safe to call snmp6_unregister_dev unconditionally from in6_dev_finish_destroy, so do it. Reported-by: Dmitry Vyukov <dvyu...@google.com> Acked-by: Hannes Frederic Sowa <han...@stressinduktion.org> Signed-off-by: Sabrina Dubroca <s...@queasysnail.net> --- Dmitry, I'm not completely sure it's the issue you're triggering, but it sems likely. net/ipv6/addrconf_core.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/net/ipv6/addrconf_core.c b/net/ipv6/addrconf_core.c index bfa941fc1165..96248a333197 100644 --- a/net/ipv6/addrconf_core.c +++ b/net/ipv6/addrconf_core.c @@ -168,6 +168,8 @@ void in6_dev_finish_destroy(struct inet6_dev *idev) pr_warn("Freeing alive inet6 device %p\n", idev); return; } + + snmp6_unregister_dev(idev); call_rcu(&idev->rcu, in6_dev_finish_destroy_rcu); } EXPORT_SYMBOL(in6_dev_finish_destroy); -- 2.6.2 -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html