HomeFreeBSD

r333175 introduced deferred deletion of multicast addresses in order to permit…

Description

r333175 introduced deferred deletion of multicast addresses in order to permit the driver ioctl
to sleep on commands to the NIC when updating multicast filters. More generally this permitted
driver's to use an sx as a softc lock. Unfortunately this change introduced a race whereby a
a multicast update would still be queued for deletion when ifconfig deleted the interface
thus calling down in to _purgemaddrs and synchronously deleting _all_ of the multicast addresses
on the interface.

Synchronously remove all external references to a multicast address before enqueueing for delete.

Reported by: lwhsu
Approved by: sbruno

Details

Provenance
mmacyAuthored on
Parents
rS333308: The ifnet pointer (ifp) in rt_newaddrmsg can be valid without ifp->if_addr…
Branches
Unknown
Tags
Unknown