From nobody Fri Oct 13 17:32:32 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4S6YVT57sJz4wXhD; Fri, 13 Oct 2023 17:32:33 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4S6YVT4htRz4K1y; Fri, 13 Oct 2023 17:32:33 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1697218353; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=2pmsN9ipIA9QWPuJJ3nTKWt8ZfA9d5VE6ZVzGFhdqiA=; b=wOk08CWhPubamgP/2sZlz3WcAASISWA0Qa9jh8O5g0pB56/c9Ngj5Zi0NXZcBXQR8bV2Ej wg4Asi9YS+rS4PuoYUrvYT+h0J/PNJPNGDYXIxzc7B/CCmMwTXZ63sgL1eTFflrQOWyS6L RGCyEhhE7Hnjy2Qz7iP6vYAi0SgXomGRZaOXeKmvkX3PsxlrLLvfUicROYt75bfVE/cq1A FU8y/Qy19WeWmffS3c8iVsTJnUljB02VFz1jl6ltZgDLNay8ceMSsQotHLKUKAUH+6sVph +vthgLdJgknbX6sD6IRhruNNqv2v7xle9pPtJzJU+yHAkuVhMUSqQSHEsdef+g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1697218353; a=rsa-sha256; cv=none; b=IYFW7fy2hx5DEgFQejy/7erKBJcCziUIs2HpWuCBjuRRtyoNcxgsYPihnal3wbNXBEC8QG d7vaYYkajULDCaOMc90wWB+se17rcjIp61iZyOz1uOAKiecUxjAIXMbDKJDNG7C/bUfsMF TC3RkR4F8KQdguOWpIKtQX/yZDNL6fHUGo3FVUNT64DkdFUTTa5yv6O8JeR6MKFrP9fMgN UrKLjC1PnxmrAMzVFkjTGW++toKPllb1ZVXBH1JU8g7DWgxYzdH0G36iJxbMIfNIg6YoeY I10m/FBjox7NxlQLZZKFq5YrGAqd4p2kfesrie8hVvQdaxCoem8YorEKeSMP/g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1697218353; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=2pmsN9ipIA9QWPuJJ3nTKWt8ZfA9d5VE6ZVzGFhdqiA=; b=D67BQQmm6XtqHP8KdHxEoVoJNBvVXeQFZOdPT2qBe5afLNFkw40M/IMh5yqrzmffw7BeIQ wt1vQSSzBS9f5YnqhUuaiZdsf0ZeQZc6JpHQjyEVnzFF7nN+GkLJ1J4CF8Pu4fP2yFS1ou 7YQo8biK+YbcwZKcIt85WJuecoNKNXUbZ4RRmtOZErFi7hz1cBfUMcAjdGH6KreSmjCsTg Ld8pklVe+dJ6IJnBSnuvuJozIS0a5munXUDFh+IuNzFJjIz64B1nMQQKHWKU2ytxRNlTMW eV9DrPweWX7Ewk95jCHTTzhNyM/564RVzgmb21W6QhrjhBF2/Iw/PAlSoX/9fw== Received: from ralga.knownspace (ip-163-182-7-56.dynamic.fuse.net [163.182.7.56]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: jhibbits) by smtp.freebsd.org (Postfix) with ESMTPSA id 4S6YVT2bKrz1NXM; Fri, 13 Oct 2023 17:32:33 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Date: Fri, 13 Oct 2023 13:32:32 -0400 From: Justin Hibbits To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: c81dd8e5fe72 - main - bpf: Add IfAPI analogue for bpf_peers_present() Message-ID: <20231013133232.574134e2@ralga.knownspace> In-Reply-To: <202310131722.39DHM2b6077203@gitrepo.freebsd.org> References: <202310131722.39DHM2b6077203@gitrepo.freebsd.org> X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; powerpc64le-unknown-linux-gnu) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Fri, 13 Oct 2023 17:22:02 GMT Justin Hibbits wrote: > The branch main has been updated by jhibbits: > > URL: > https://cgit.FreeBSD.org/src/commit/?id=c81dd8e5fe72d0c7ec055c8621bb2da3a3627abf > > commit c81dd8e5fe72d0c7ec055c8621bb2da3a3627abf > Author: Justin Hibbits > AuthorDate: 2023-10-04 20:56:52 +0000 > Commit: Justin Hibbits > CommitDate: 2023-10-13 17:12:44 +0000 > > bpf: Add IfAPI analogue for bpf_peers_present() > > An interface's bpf could feasibly not exist, in which case > bpf_peers_present() would panic from a NULL pointer dereference. > Solve this by adding a new IfAPI that includes a NULL check. Since > this API is used in only a handful of locations, it reduces the the > NULL check scope over inserting the check into bpf_peers_present(). > > Sponsored by: Juniper Networks, Inc. Reviewed by: zlei > MFC after: 1 week > --- > sys/dev/firewire/if_fwip.c | 4 ++-- > sys/dev/hyperv/netvsc/if_hn.c | 4 ++-- > sys/dev/my/if_my.c | 2 +- > sys/dev/usb/usb_pf.c | 4 +--- > sys/net/bpf.c | 14 ++++++++++++++ > sys/net/bpf.h | 1 + > 6 files changed, 21 insertions(+), 8 deletions(-) > > diff --git a/sys/dev/firewire/if_fwip.c b/sys/dev/firewire/if_fwip.c > index 5237c555d999..b698db6c9620 100644 > --- a/sys/dev/firewire/if_fwip.c > +++ b/sys/dev/firewire/if_fwip.c > @@ -780,7 +780,7 @@ fwip_stream_input(struct fw_xferq *xferq) > * Record the sender ID for possible BPF usage. > */ > src = ntohl(p[1]) >> 16; > - if (bpf_peers_present(if_getbpf(ifp))) { > + if (bpf_peers_present_if(ifp)) { > mtag = m_tag_alloc(MTAG_FIREWIRE, > MTAG_FIREWIRE_SENDER_EUID, > 2*sizeof(uint32_t), M_NOWAIT); > @@ -880,7 +880,7 @@ fwip_unicast_input(struct fw_xfer *xfer) > goto done; > } > > - if (bpf_peers_present(if_getbpf(ifp))) { > + if (bpf_peers_present_if(ifp)) { > /* > * Record the sender ID for possible BPF usage. > */ > diff --git a/sys/dev/hyperv/netvsc/if_hn.c > b/sys/dev/hyperv/netvsc/if_hn.c index 7d8e1914163e..f6f885873a79 > 100644 --- a/sys/dev/hyperv/netvsc/if_hn.c > +++ b/sys/dev/hyperv/netvsc/if_hn.c > @@ -3262,7 +3262,7 @@ hn_txpkt(if_t ifp, struct hn_tx_ring *txr, > struct hn_txdesc *txd) int error, send_failed = 0, has_bpf; > > again: > - has_bpf = bpf_peers_present(if_getbpf(ifp)); > + has_bpf = bpf_peers_present_if(ifp); > if (has_bpf) { > /* > * Make sure that this txd and any aggregated txds > are not @@ -5972,7 +5972,7 @@ hn_transmit(if_t ifp, struct mbuf *m) > omcast = (m->m_flags & M_MCAST) != 0; > > if (sc->hn_xvf_flags & HN_XVFFLAG_ACCBPF) { > - if > (bpf_peers_present(if_getbpf(ifp))) { > + if (bpf_peers_present_if(ifp)) { > m_bpf = m_copypacket(m, > M_NOWAIT); if (m_bpf == NULL) { > /* > diff --git a/sys/dev/my/if_my.c b/sys/dev/my/if_my.c > index 2bf4573d337b..631c38df9dca 100644 > --- a/sys/dev/my/if_my.c > +++ b/sys/dev/my/if_my.c > @@ -1152,7 +1152,7 @@ my_rxeof(struct my_softc * sc) > * broadcast packet, multicast packet, matches our > ethernet > * address or the interface is in promiscuous mode. > */ > - if (bpf_peers_present(if_getbpf(ifp))) { > + if (bpf_peers_present_if(ifp)) { > bpf_mtap_if(ifp, m); > if (if_getflags(ifp) & IFF_PROMISC && > (bcmp(eh->ether_dhost, > if_getlladdr(sc->my_ifp), diff --git a/sys/dev/usb/usb_pf.c > b/sys/dev/usb/usb_pf.c index 43e819684857..4da59419a7c6 100644 > --- a/sys/dev/usb/usb_pf.c > +++ b/sys/dev/usb/usb_pf.c > @@ -408,9 +408,7 @@ usbpf_xfertap(struct usb_xfer *xfer, int type) > bus = xfer->xroot->bus; > > /* sanity checks */ > - if (bus->ifp == NULL || if_getbpf(bus->ifp) == NULL) > - return; > - if (!bpf_peers_present(if_getbpf(bus->ifp))) > + if (bus->ifp == NULL || !bpf_peers_present_if(bus->ifp)) > return; > > totlen = usbpf_xfer_precompute_size(xfer, type); > diff --git a/sys/net/bpf.c b/sys/net/bpf.c > index 8ca6e941e646..96420b709911 100644 > --- a/sys/net/bpf.c > +++ b/sys/net/bpf.c > @@ -2879,6 +2879,14 @@ bpfdetach(struct ifnet *ifp) > BPF_UNLOCK(); > } > > +bool > +bpf_peers_present_if(struct ifnet *ifp) > +{ > + struct bpf_if *bp = ifp->if_bpf; > + > + return (bpf_peers_present(bp) > 0); > +} > + > /* > * Get a list of available data link type of the interface. > */ > @@ -3162,6 +3170,12 @@ bpfdetach(struct ifnet *ifp) > { > } > > +bool > +bpf_peers_present_if(struct ifnet *ifp) > +{ > + return (false); > +} > + > u_int > bpf_filter(const struct bpf_insn *pc, u_char *p, u_int wirelen, > u_int buflen) { > diff --git a/sys/net/bpf.h b/sys/net/bpf.h > index 924dea5fc9f4..31968445aac1 100644 > --- a/sys/net/bpf.h > +++ b/sys/net/bpf.h > @@ -428,6 +428,7 @@ void bpf_mtap2_if(struct ifnet *, void *, > u_int, struct mbuf *); void bpfattach(struct ifnet *, u_int, > u_int); void bpfattach2(struct ifnet *, u_int, u_int, struct > bpf_if **); void bpfdetach(struct ifnet *); > +bool bpf_peers_present_if(struct ifnet *); > #ifdef VIMAGE > int bpf_get_bp_params(struct bpf_if *, u_int *, u_int *); > #endif