aboutsummaryrefslogtreecommitdiff
path: root/sys/netinet6/in6_var.h
diff options
context:
space:
mode:
authorHans Petter Selasky <hselasky@FreeBSD.org>2019-01-24 08:25:02 +0000
committerHans Petter Selasky <hselasky@FreeBSD.org>2019-01-24 08:25:02 +0000
commitdea72f062af179ccb8abe3d2e37f4eb9b1c152d4 (patch)
tree09f57a740e31a030dc0d808f98e45ff75a40d7f1 /sys/netinet6/in6_var.h
parent7a028976478fe28cc889bea4658f14725628432c (diff)
downloadsrc-dea72f062af179ccb8abe3d2e37f4eb9b1c152d4.tar.gz
src-dea72f062af179ccb8abe3d2e37f4eb9b1c152d4.zip
When detaching a network interface drain the workqueue freeing the inm's
because the destructor will access the if_ioctl() callback in the ifnet pointer which is about to be freed. This prevents use-after-free. PR: 233535 Differential Revision: https://reviews.freebsd.org/D18887 Reviewed by: bz (net) Tested by: ae MFC after: 1 week Sponsored by: Mellanox Technologies
Notes
Notes: svn path=/head/; revision=343394
Diffstat (limited to 'sys/netinet6/in6_var.h')
-rw-r--r--sys/netinet6/in6_var.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/netinet6/in6_var.h b/sys/netinet6/in6_var.h
index 746aed35945c..a19747d97918 100644
--- a/sys/netinet6/in6_var.h
+++ b/sys/netinet6/in6_var.h
@@ -811,6 +811,7 @@ void in6m_print(const struct in6_multi *);
int in6m_record_source(struct in6_multi *, const struct in6_addr *);
void in6m_release_deferred(struct in6_multi *);
void in6m_release_list_deferred(struct in6_multi_head *);
+void in6m_release_wait(void);
void ip6_freemoptions(struct ip6_moptions *);
int ip6_getmoptions(struct inpcb *, struct sockopt *);
int ip6_setmoptions(struct inpcb *, struct sockopt *);