diff options
author | Darren Reed <darrenr@FreeBSD.org> | 2005-01-08 04:32:02 +0000 |
---|---|---|
committer | Darren Reed <darrenr@FreeBSD.org> | 2005-01-08 04:32:02 +0000 |
commit | 4d7cb202f188098acc7bde1af88839a3ab51a47f (patch) | |
tree | 2e060ed554c49efa4401d36f09d350692eba6427 /sys/contrib/ipfilter/netinet/fil.c | |
parent | fd544ee8f7f0fc0578411b918d5bab1ff9c9599c (diff) | |
download | src-4d7cb202f188098acc7bde1af88839a3ab51a47f.tar.gz src-4d7cb202f188098acc7bde1af88839a3ab51a47f.zip |
Elminate 1 LOR (actually a recursive mutex grab) involving ipfilter where
we loop through all the list of NICs (struct ifnet), holding the lock on
it and then do a name lookup with ifunit() whilst holding it.
Notes
Notes:
svn path=/head/; revision=139894
Diffstat (limited to 'sys/contrib/ipfilter/netinet/fil.c')
-rw-r--r-- | sys/contrib/ipfilter/netinet/fil.c | 27 |
1 files changed, 2 insertions, 25 deletions
diff --git a/sys/contrib/ipfilter/netinet/fil.c b/sys/contrib/ipfilter/netinet/fil.c index e545b9bf461c..76fe9d9ca1e2 100644 --- a/sys/contrib/ipfilter/netinet/fil.c +++ b/sys/contrib/ipfilter/netinet/fil.c @@ -2121,31 +2121,8 @@ register frentry_t *fr; void frsync() { -# if !SOLARIS - register struct ifnet *ifp; - -# if defined(__OpenBSD__) || ((NetBSD >= 199511) && (NetBSD < 1991011)) || \ - (defined(__FreeBSD_version) && (__FreeBSD_version >= 300000)) -# if (NetBSD >= 199905) || defined(__OpenBSD__) - for (ifp = ifnet.tqh_first; ifp; ifp = ifp->if_list.tqe_next) -# elif defined(__FreeBSD_version) && (__FreeBSD_version >= 500043) - IFNET_RLOCK(); - TAILQ_FOREACH(ifp, &ifnet, if_link) -# else - for (ifp = ifnet.tqh_first; ifp; ifp = ifp->if_link.tqe_next) -# endif -# else - for (ifp = ifnet; ifp; ifp = ifp->if_next) -# endif - { - ip_natsync(ifp); - ip_statesync(ifp); - } - ip_natsync((struct ifnet *)-1); -# if defined(__FreeBSD_version) && (__FreeBSD_version >= 500043) - IFNET_RUNLOCK(); -# endif -# endif /* !SOLARIS */ + ip_natsync(NULL); + ip_statesync(NULL); WRITE_ENTER(&ipf_mutex); frsynclist(ipacct[0][fr_active]); |