Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Jan 2020 21:01:19 +0000 (UTC)
From:      Kristof Provost <kp@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r356995 - head/sys/netpfil/pf
Message-ID:  <202001222101.00ML1JZW069936@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kp
Date: Wed Jan 22 21:01:19 2020
New Revision: 356995
URL: https://svnweb.freebsd.org/changeset/base/356995

Log:
  pfsync: Ensure we enter network epoch before calling ip_output
  
  As of r356974 calls to ip_output() require us to be in the network epoch.
  That wasn't the case for the calls done from pfsyncintr() and
  pfsync_defer_tmo().

Modified:
  head/sys/netpfil/pf/if_pfsync.c

Modified: head/sys/netpfil/pf/if_pfsync.c
==============================================================================
--- head/sys/netpfil/pf/if_pfsync.c	Wed Jan 22 20:53:25 2020	(r356994)
+++ head/sys/netpfil/pf/if_pfsync.c	Wed Jan 22 21:01:19 2020	(r356995)
@@ -1806,6 +1806,7 @@ pfsync_undefer(struct pfsync_deferral *pd, int drop)
 static void
 pfsync_defer_tmo(void *arg)
 {
+	struct epoch_tracker et;
 	struct pfsync_deferral *pd = arg;
 	struct pfsync_softc *sc = pd->pd_sc;
 	struct mbuf *m = pd->pd_m;
@@ -1814,6 +1815,7 @@ pfsync_defer_tmo(void *arg)
 
 	PFSYNC_BUCKET_LOCK_ASSERT(b);
 
+	NET_EPOCH_ENTER(et);
 	CURVNET_SET(m->m_pkthdr.rcvif->if_vnet);
 
 	TAILQ_REMOVE(&b->b_deferrals, pd, pd_entry);
@@ -1828,6 +1830,7 @@ pfsync_defer_tmo(void *arg)
 	pf_release_state(st);
 
 	CURVNET_RESTORE();
+	NET_EPOCH_EXIT(et);
 }
 
 static void
@@ -2307,11 +2310,13 @@ pfsync_push_all(struct pfsync_softc *sc)
 static void
 pfsyncintr(void *arg)
 {
+	struct epoch_tracker et;
 	struct pfsync_softc *sc = arg;
 	struct pfsync_bucket *b;
 	struct mbuf *m, *n;
 	int c;
 
+	NET_EPOCH_ENTER(et);
 	CURVNET_SET(sc->sc_ifp->if_vnet);
 
 	for (c = 0; c < pfsync_buckets; c++) {
@@ -2345,6 +2350,7 @@ pfsyncintr(void *arg)
 		}
 	}
 	CURVNET_RESTORE();
+	NET_EPOCH_EXIT(et);
 }
 
 static int



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202001222101.00ML1JZW069936>