git: network - Remove crit_exit/crit_enter wrappers in pf.c

YONETANI Tomokazu qhwt.dfly at les.ath.cx
Fri Sep 17 17:49:59 PDT 2010


On Fri, Sep 17, 2010 at 04:40:15PM -0700, Matthew Dillon wrote:
> commit b8a167909d6e02262d0f8fa42ae3e75a2febc3b0
> Author: Matthew Dillon <dillon at apollo.backplane.com>
> Date:   Fri Sep 17 16:38:37 2010 -0700
> 
>     network - Remove crit_exit/crit_enter wrappers in pf.c
>     
>     * Note I'm talking about exit/enter wrappers, not enter/exit wrappers.
>       I believe the enter/exit wrappers can be removed too but for now
>       we have to remove the exit/enter wrappers which assumed a critical
>       section would be held on entry.
>     
>       This is no longer the case.  Since so much of the network stack is
>       now threaded callers into PF are not necessarily holding a critical
>       section to exit out of.
>     
>     Reported-by: lentferj, Rumko
> 
> Summary of changes:
>  sys/dev/netif/fxp/if_fxp.c |    7 ++++---
>  sys/net/pf/pf.c            |   24 ++----------------------
>  2 files changed, 6 insertions(+), 25 deletions(-)

While looking at this change, I found an odd piece of code in pf_route6()
at line 5384; there's no prior call to crit_exit() in this function.
Is this OK?

	/* Cheat. XXX why only in the v6 case??? */
	if (r->rt == PF_FASTROUTE) {
		m0->m_pkthdr.pf.flags |= PF_TAG_GENERATED;
		ip6_output(m0, NULL, NULL, 0, NULL, NULL, NULL);
		crit_enter();
		return;
	}





More information about the Commits mailing list