freebsd-dev/sys
Robert Watson dd5a318ba3 Introduce in_multi_mtx, which will protect IPv4-layer multicast address
lists, as well as accessor macros.  For now, this is a recursive mutex
due code sequences where IPv4 multicast calls into IGMP calls into
ip_output(), which then tests for a multicast forwarding case.

For support macros in in_var.h to check multicast address lists, assert
that in_multi_mtx is held.

Acquire in_multi_mtx around iteration over the IPv4 multicast address
lists, such as in ip_input() and ip_output().

Acquire in_multi_mtx when manipulating the IPv4 layer multicast addresses,
as well as over the manipulation of ifnet multicast address lists in order
to keep the two layers in sync.

Lock down accesses to IPv4 multicast addresses in IGMP, or assert the
lock when performing IGMP join/leave events.

Eliminate spl's associated with IPv4 multicast addresses, portions of
IGMP that weren't previously expunged by IGMP locking.

Add in_multi_mtx, igmp_mtx, and if_addr_mtx lock order to hard-coded
lock order in WITNESS, in that order.

Problem reported by:	Ed Maste <emaste at phaedrus dot sandvine dot ca>
MFC after:		10 days
2005-08-03 19:29:47 +00:00
..
alpha - Add support for saving stack traces and displaying them via printf(9) 2005-08-03 04:27:40 +00:00
amd64 - Add support for saving stack traces and displaying them via printf(9) 2005-08-03 04:33:48 +00:00
arm - Add support for saving stack traces and displaying them via printf(9) 2005-08-03 04:27:40 +00:00
boot Fix a comparison that broke ``set console=vidconsole'' and even the 2005-07-29 12:47:42 +00:00
bsm
cam
coda
compat Add missing dependencies on the SYSVIPC modules. 2005-07-29 19:41:04 +00:00
conf - Add support for saving stack traces and displaying them via printf(9) 2005-08-03 04:27:40 +00:00
contrib
crypto
ddb
dev Minor style nits. 2005-08-03 15:07:14 +00:00
doc
fs devfs is not yet fully MPSAFE - for example, multiple concurrent devfs(8) 2005-07-29 23:00:56 +00:00
gdb
geom MFp4: Export more informations about encrypted providers. 2005-07-27 22:31:57 +00:00
gnu
i4b
i386 - Add support for saving stack traces and displaying them via printf(9) 2005-08-03 04:27:40 +00:00
ia64 - Add support for saving stack traces and displaying them via printf(9) 2005-08-03 04:27:40 +00:00
isa Add pnp and location info for the ISA bus. The pnp info is the 2005-08-01 07:03:10 +00:00
isofs/cd9660
kern Introduce in_multi_mtx, which will protect IPv4-layer multicast address 2005-08-03 19:29:47 +00:00
libkern
modules Connect GEOM_ELI class to the build. 2005-07-27 21:47:55 +00:00
net Protect link layer network interface multicast address list manipulation 2005-08-02 23:23:26 +00:00
net80211 close a race between reclaiming a node when a station is inactive 2005-07-31 06:12:32 +00:00
netatalk
netatm
netgraph Fix up the comment. 2005-08-02 20:06:48 +00:00
netinet Introduce in_multi_mtx, which will protect IPv4-layer multicast address 2005-08-03 19:29:47 +00:00
netinet6 Modify network protocol consumers of the ifnet multicast address lists 2005-08-02 23:51:22 +00:00
netipsec
netipx
netkey fix build without option INET6. 2005-07-30 20:10:31 +00:00
netnatm
netncp Change API of mb_copy_t in libmchain so that netsmb can handle 2005-07-29 13:22:37 +00:00
netsmb Change API of mb_copy_t in libmchain so that netsmb can handle 2005-07-29 13:22:37 +00:00
nfs
nfs4client
nfsclient FIx for a bug in the change that made nfs_timer() MPSAFE. We need to 2005-07-27 15:06:26 +00:00
nfsserver
opencrypto
pc98
pccard
pci Modify device drivers supporting multicast addresses to lock if_addr_mtx 2005-08-03 00:18:35 +00:00
posix4
powerpc - Add support for saving stack traces and displaying them via printf(9) 2005-08-03 04:27:40 +00:00
rpc
security If a "hole" opens up in the ruleset (i.e.: remove 5), do not return 2005-07-28 13:55:12 +00:00
sparc64 - Add support for saving stack traces and displaying them via printf(9) 2005-08-03 04:27:40 +00:00
sys - Fix a problem that slipped through review; the stack member of the lockmgr 2005-08-03 04:59:07 +00:00
tools
ufs Delay freeing disk space for file system blocks until all dirty buffers 2005-07-31 20:24:14 +00:00
vm Rename UMA_MAX_NAME to UTH_MAX_NAME, since it's a maximum in the 2005-07-25 00:47:32 +00:00
Makefile