diff options
author | rwatson <rwatson@FreeBSD.org> | 2004-06-24 02:01:48 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2004-06-24 02:01:48 +0000 |
commit | 93baf0b01a4613cd177b1fd2c4b2c26f01456e94 (patch) | |
tree | 8bec5c7d28a474674be9c4a8c3f3bb95c2a1f3c5 /sys/netinet/ip_mroute.c | |
parent | ed101b4b5dfc35305d7862e8bbf648325eee5d46 (diff) | |
download | FreeBSD-src-93baf0b01a4613cd177b1fd2c4b2c26f01456e94.zip FreeBSD-src-93baf0b01a4613cd177b1fd2c4b2c26f01456e94.tar.gz |
When asserting non-Giant locks in the network stack, also assert
Giant if debug.mpsafenet=0, as any points that require synchronization
in the SMPng world also required it in the Giant-world:
- inpcb locks (including IPv6)
- inpcbinfo locks (including IPv6)
- dummynet subsystem lock
- ipfw2 subsystem lock
Diffstat (limited to 'sys/netinet/ip_mroute.c')
-rw-r--r-- | sys/netinet/ip_mroute.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/netinet/ip_mroute.c b/sys/netinet/ip_mroute.c index 6d7f213..c4ef487 100644 --- a/sys/netinet/ip_mroute.c +++ b/sys/netinet/ip_mroute.c @@ -104,7 +104,10 @@ SYSCTL_OPAQUE(_net_inet_ip, OID_AUTO, mfctable, CTLFLAG_RD, static struct mtx mfc_mtx; #define MFC_LOCK() mtx_lock(&mfc_mtx) #define MFC_UNLOCK() mtx_unlock(&mfc_mtx) -#define MFC_LOCK_ASSERT() mtx_assert(&mfc_mtx, MA_OWNED) +#define MFC_LOCK_ASSERT() do { \ + mtx_assert(&mfc_mtx, MA_OWNED); \ + NET_ASSERT_GIANT(); \ +} while (0) #define MFC_LOCK_INIT() mtx_init(&mfc_mtx, "mroute mfc table", NULL, MTX_DEF) #define MFC_LOCK_DESTROY() mtx_destroy(&mfc_mtx) |