Bruce M Simpson d565e5f206 In if_freemulti(), relax the paranoid KASSERT() on ifma->ifma_protospec.
This KASSERT() existed as a sanity check that upper layers in the network
stack (e.g. inet, inet6) had released their reference to the underlying
driver's multicast memberships (ifmultiaddr{}). However it assumes the
lifecycle of the driver membership corresponds to the lifecycle of the
network layer membership.

In the submitter's case, ieee80211_ioctl_updatemulti() attempts to
reprogram the (parent, physical) ifnet{} memberships in response
to a change in membership on the (child, virtual) VAP ifnet, using
a batched update mechanism. These updates happen independently from
the network layer, causing a "false negative" assertion failure.

There are possibly other use cases where this KASSERT() may be triggered
by other networking stack activity (e.g. where a nesting relationship
exists between multiple ifnet{} instances). This suggests that further
review of FreeBSD's approach to nested ifnet relationships is needed.

MFC after:	6 weeks
Submitted by:	adrian@
2014-04-10 18:43:02 +00:00
..
2014-03-05 02:35:15 +00:00
2014-02-17 12:07:17 +00:00
2014-03-14 02:58:48 +00:00
2014-03-14 06:29:43 +00:00
2013-11-15 12:12:50 +00:00
2014-03-14 06:29:43 +00:00
2014-03-14 02:58:48 +00:00
2014-03-14 06:29:43 +00:00
2014-03-14 06:29:43 +00:00
2014-03-14 02:58:48 +00:00
2014-03-14 06:29:43 +00:00
2014-03-14 02:58:48 +00:00
2013-11-26 15:23:56 +00:00
2014-03-14 06:29:43 +00:00