The branch main has been updated by zlei:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=ebc2bab04823c24c524f913457d6b88dc7ea9fac

commit ebc2bab04823c24c524f913457d6b88dc7ea9fac
Author:     Zhenlei Huang <z...@freebsd.org>
AuthorDate: 2024-06-09 01:05:22 +0000
Commit:     Zhenlei Huang <z...@freebsd.org>
CommitDate: 2024-06-09 01:05:22 +0000

    pflog: Correctly check if bpf peers are present
    
    On creating the pflog(4) interface, pflog_clone_create() does an
    unconditional bpfattach(). Use bpf_peers_present() which was introduced
    in commit 16d878cc99ef [1] to check the presence of bpf peers.
    
    This will save a little CPU cycles when no bpf peers present. There
    should be no functional change.
    
    1. 16d878cc99ef Fix 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/D45532
---
 sys/netpfil/pf/if_pflog.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/sys/netpfil/pf/if_pflog.c b/sys/netpfil/pf/if_pflog.c
index 7ac337a84c5d..1e73d5f51851 100644
--- a/sys/netpfil/pf/if_pflog.c
+++ b/sys/netpfil/pf/if_pflog.c
@@ -223,9 +223,10 @@ pflog_packet(struct pfi_kkif *kif, struct mbuf *m, 
sa_family_t af,
        struct pfloghdr hdr;
 
        if (kif == NULL || m == NULL || rm == NULL || pd == NULL)
-               return ( 1);
+               return (1);
 
-       if ((ifn = V_pflogifs[rm->logif]) == NULL || !ifn->if_bpf)
+       ifn = V_pflogifs[rm->logif];
+       if (ifn == NULL || !bpf_peers_present(ifn->if_bpf))
                return (0);
 
        bzero(&hdr, sizeof(hdr));
@@ -274,7 +275,7 @@ pflog_packet(struct pfi_kkif *kif, struct mbuf *m, 
sa_family_t af,
 
        if_inc_counter(ifn, IFCOUNTER_OPACKETS, 1);
        if_inc_counter(ifn, IFCOUNTER_OBYTES, m->m_pkthdr.len);
-       BPF_MTAP2(ifn, &hdr, PFLOG_HDRLEN, m);
+       bpf_mtap2(ifn->if_bpf, &hdr, PFLOG_HDRLEN, m);
 
        return (0);
 }

Reply via email to