aboutsummaryrefslogtreecommitdiff
path: root/include/net/addrconf.h
diff options
context:
space:
mode:
authorSabrina Dubroca <sd@queasysnail.net>2014-09-10 23:23:02 +0200
committerMoyster <oysterized@gmail.com>2016-11-17 12:12:23 +0100
commit4aed4f5eb5d904dbd14b91e576baeabd20d6bd0a (patch)
tree56e7fb279431293f01282a0fd7a64cf55d0895c9 /include/net/addrconf.h
parentc2cdf59f23781deb3f9c973df4ef895cbf88ee0d (diff)
ipv6: clean up anycast when an interface is destroyed
If we try to rmmod the driver for an interface while sockets with setsockopt(JOIN_ANYCAST) are alive, some refcounts aren't cleaned up and we get stuck on: unregister_netdevice: waiting for ens3 to become free. Usage count = 1 If we LEAVE_ANYCAST/close everything before rmmod'ing, there is no problem. We need to perform a cleanup similar to the one for multicast in addrconf_ifdown(how == 1). BUG: 18902601 Bug: 19100303 Change-Id: I6d51aed5755eb5738fcba91950e7773a1c985d2e Signed-off-by: Sabrina Dubroca <sd@queasysnail.net> Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Patrick Tjin <pattjin@google.com>
Diffstat (limited to 'include/net/addrconf.h')
-rw-r--r--include/net/addrconf.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/include/net/addrconf.h b/include/net/addrconf.h
index cfa6b2ebf..9261e6c72 100644
--- a/include/net/addrconf.h
+++ b/include/net/addrconf.h
@@ -203,7 +203,7 @@ extern int ipv6_dev_ac_inc(struct net_device *dev, const struct in6_addr *addr);
extern int __ipv6_dev_ac_dec(struct inet6_dev *idev, const struct in6_addr *addr);
extern bool ipv6_chk_acast_addr(struct net *net, struct net_device *dev,
const struct in6_addr *addr);
-
+extern void ipv6_ac_destroy_dev(struct inet6_dev *idev);
/* Device notifier */
extern int register_inet6addr_notifier(struct notifier_block *nb);