mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
pfsync: Correctly check if bpf peers are present
On creating the pfsync(4) interface, pfsync_clone_create() does an unconditional bpfattach(). Use bpf_peers_present() which was introduced in commit16d878cc99[1] to check the presence of bpf peers. This will save a little CPU cycles and memory usage when the synchronisation interface is not configured and there is no bpf peers present. There should be no functional change. 1.16d878cc99Fix the following bpf(4) race condition which can result in a panic Reviewed by: kp MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D45533 (cherry picked from commit 2671bde99295d9e01d10316d0f3fb8b6d21f0f4d)
This commit is contained in:
parent
de60ffe06f
commit
2fb39e6bbe
1 changed files with 3 additions and 3 deletions
|
|
@ -1792,7 +1792,7 @@ pfsync_sendout(int schedswi, int c)
|
|||
("%s: sc_len %zu", __func__, b->b_len));
|
||||
PFSYNC_BUCKET_LOCK_ASSERT(b);
|
||||
|
||||
if (ifp->if_bpf == NULL && sc->sc_sync_if == NULL) {
|
||||
if (!bpf_peers_present(ifp->if_bpf) && sc->sc_sync_if == NULL) {
|
||||
pfsync_drop(sc);
|
||||
return;
|
||||
}
|
||||
|
|
@ -1921,10 +1921,10 @@ pfsync_sendout(int schedswi, int c)
|
|||
V_pfsyncstats.pfsyncs_oacts[PFSYNC_ACT_EOF]++;
|
||||
|
||||
/* we're done, let's put it on the wire */
|
||||
if (ifp->if_bpf) {
|
||||
if (bpf_peers_present(ifp->if_bpf)) {
|
||||
m->m_data += aflen;
|
||||
m->m_len = m->m_pkthdr.len = len - aflen;
|
||||
BPF_MTAP(ifp, m);
|
||||
bpf_mtap(ifp->if_bpf, m);
|
||||
m->m_data -= aflen;
|
||||
m->m_len = m->m_pkthdr.len = len;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue