From nobody Mon Oct 19 17:32:33 2026 X-Original-To: dev-commits-src-main@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 4j7jKt2Mqgz6vj39 for ; Mon, 19 Oct 2026 17:32:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (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) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4j7jKs6wXqz4fLj for ; Mon, 19 Oct 2026 17:32:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1792431154; 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; bh=ECBSclEZLBOPbQykfMw1o5sE4xbN8XG7wN7XYk5QnsU=; b=s/G0EKRZynuMybKqHxTvV2fqiZf0IEnCf2aWvBa5ZO9pyYtFXoy86/FFKzdMUWdewIyiLl C0ZBaK6dMLMeSpaGvN5nfhpQx/+ksX+DZjqJlLgInSWNHdrtfrNrGFP6omRyjIIu0pp+2A +skUsAFYUcXhvSK29Z2OmarYb03BgGKMcb257v08vtIhH3bptxJQRHENyaSWuZvjnWUdbX DXpWuV3CAO0RJN01M3QS3AIt09kdymGUTW4bLSFdLkH86KdbaQHJah8AwH14WbPk30qvSD 1mpDctKijzxo+egW9VRMnTruiHCsZ//SFOUXsEPMbd5z3ar1EB0OR9IenZhE0Q== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1792431154; b=I4lAg7zw+84oiRe8ogucoRXt80beltdmsxaftabJcdQ3K09hgKgGCsY/8S9O8Xqf93fKsp KO+073aS+iR8wmZnLowWCMs6VpypKwC1uSk9A6OYyDG9ao+YtFcjAwSNrdICvORvdWj7Qd qrGM2V7cv7Eg97v6ozVYVPrIgfaEadQQ5F3Qo/OD3sCwhfzuDOmLuCjBCMV7WmtD1oBR9k DY97d8VW87Xu0PQ857ymVB3w6zzVj7mciWPclpqCHtgx/CmdeUPfhhNeZNE77d8+08UyV4 qyk49ciUBDrG/aZHi0rYDpYJYJYdUbXHYPtxWReEKjfpGoAv9zIvGCxwJVz4Eg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1792431154; 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; bh=ECBSclEZLBOPbQykfMw1o5sE4xbN8XG7wN7XYk5QnsU=; b=sv4ZUlVnJHbWyu3BaqsHGZamqOg+wrWgF4eTtqm8bm3AB3lTDjkhoZgwSoBEGEbpMqiSha KzPevxt3ltRXyH3fQwBPIZkllJ+9fRvND9Ixze0WIlm6ksOPyxZ4dUFwCQMOmKUqcpMbsl WzV8NbW+whrIqJktT8mAWilHJDAmeyMLGjTWBKO5DaWk7Zp3dwUfsxWCuy/IzZYXhlVRX+ W/e/+sc1LdcJcrZMToAPWxFJW/6E/edITDEyd4sAKJyHN8laEQp50PPNgCJtDDwxTiUyEH EOzKyTdYt3OWHhaLpJdb0egukml/OvFhf4dbnTUh5xA//5CL2PewRc8PJEWT4Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4j7jKs4k0ZzV89 for ; Mon, 19 Oct 2026 17:32:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 23fad by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 19 Oct 2026 17:32:33 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Gleb Smirnoff Subject: git: 41356c80179c - main - net*: use inlined m_pullup() List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: Commit messages for the main branch of the src repository List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 41356c80179c708b6a49eabf1be9cedd6bca4444 Auto-Submitted: auto-generated Date: Mon, 19 Oct 2026 17:32:33 +0000 Message-Id: <6ad65431.23fad.1b1770da@gitrepo.freebsd.org> The branch main has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=41356c80179c708b6a49eabf1be9cedd6bca4444 commit 41356c80179c708b6a49eabf1be9cedd6bca4444 Author: Gleb Smirnoff AuthorDate: 2026-10-19 17:32:00 +0000 Commit: Gleb Smirnoff CommitDate: 2026-10-19 17:32:00 +0000 net*: use inlined m_pullup() Leverage the fact that m_pullup() in an inline function in mbuf.h and let compiler to do all optimizations. Mostly mechanical changes, but in few cases surrounding lines are brought to style(9). In netinet6, a few input functions changed to set the input/output `struct mbuf **` pointer to NULL at a single place. Reviewed by: pouria, zlei, gallatin Differential Revision: https://reviews.freebsd.org/D60689 --- sys/net/bridgestp.c | 9 +- sys/net/debugnet.c | 30 ++-- sys/net/debugnet_inet.c | 42 ++--- sys/net/ieee8023ad_lacp.c | 16 +- sys/net/if_bridge.c | 75 +++------ sys/net/if_ethersubr.c | 10 +- sys/net/if_geneve.c | 15 +- sys/net/if_gif.c | 20 +-- sys/net/if_gre.c | 7 +- sys/net/if_me.c | 12 +- sys/net/if_stf.c | 22 +-- sys/net/if_tuntap.c | 3 +- sys/net/if_vlan.c | 3 +- sys/net/if_vxlan.c | 3 +- sys/net/rtsock.c | 3 +- sys/net80211/ieee80211_adhoc.c | 3 +- sys/net80211/ieee80211_hostap.c | 3 +- sys/net80211/ieee80211_input.c | 5 +- sys/net80211/ieee80211_mesh.c | 9 +- sys/net80211/ieee80211_output.c | 3 +- sys/net80211/ieee80211_sta.c | 3 +- sys/net80211/ieee80211_superg.c | 3 +- sys/net80211/ieee80211_wds.c | 3 +- sys/netgraph/bluetooth/hci/ng_hci_var.h | 4 +- sys/netgraph/bluetooth/l2cap/ng_l2cap_misc.c | 2 +- sys/netgraph/bluetooth/l2cap/ng_l2cap_var.h | 4 +- .../bluetooth/socket/ng_btsocket_hci_raw.c | 8 +- sys/netgraph/bluetooth/socket/ng_btsocket_l2cap.c | 17 +-- sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c | 11 +- sys/netgraph/bluetooth/socket/ng_btsocket_sco.c | 10 +- sys/netgraph/netflow/ng_netflow.c | 9 +- sys/netgraph/ng_UI.c | 3 +- sys/netgraph/ng_bridge.c | 2 +- sys/netgraph/ng_checksum.c | 10 +- sys/netgraph/ng_eiface.c | 7 +- sys/netgraph/ng_etf.c | 9 +- sys/netgraph/ng_ether.c | 6 +- sys/netgraph/ng_ether_echo.c | 9 +- sys/netgraph/ng_frame_relay.c | 2 +- sys/netgraph/ng_gif.c | 4 +- sys/netgraph/ng_gif_demux.c | 3 +- sys/netgraph/ng_ipfw.c | 6 +- sys/netgraph/ng_l2tp.c | 12 +- sys/netgraph/ng_lmi.c | 2 +- sys/netgraph/ng_patch.c | 5 +- sys/netgraph/ng_ppp.c | 14 +- sys/netgraph/ng_pppoe.c | 34 ++--- sys/netgraph/ng_pptpgre.c | 45 +++--- sys/netgraph/ng_rfc1490.c | 3 +- sys/netgraph/ng_tcpmss.c | 7 +- sys/netgraph/ng_vjc.c | 18 +-- sys/netgraph/ng_vlan.c | 2 +- sys/netgraph/ng_vlan_rotate.c | 9 +- sys/netinet/if_ether.c | 16 +- sys/netinet/ip_carp.c | 52 +++---- sys/netinet/ip_divert.c | 6 +- sys/netinet/ip_icmp.c | 18 +-- sys/netinet/ip_input.c | 20 +-- sys/netinet/ip_mroute.c | 2 +- sys/netinet/raw_ip.c | 9 +- sys/netinet/tcp_input.c | 49 +++--- sys/netinet/tcp_stacks/rack_bbr_common.c | 20 +-- sys/netinet/tcp_subr.c | 26 ++-- sys/netinet/udp_usrreq.c | 8 +- sys/netinet6/dest6.c | 26 +--- sys/netinet6/frag6.c | 20 +-- sys/netinet6/icmp6.c | 169 +++++++-------------- sys/netinet6/ip6_input.c | 40 ++--- sys/netinet6/ip6_mroute.c | 9 +- sys/netinet6/mld6.c | 19 +-- sys/netinet6/nd6_nbr.c | 18 +-- sys/netinet6/nd6_rtr.c | 20 +-- sys/netinet6/raw_ip6.c | 3 +- sys/netinet6/route6.c | 29 +--- sys/netinet6/sctp6_usrreq.c | 9 +- sys/netinet6/send.c | 17 +-- sys/netinet6/udp6_usrreq.c | 24 ++- sys/netipsec/ipsec_input.c | 5 +- sys/netipsec/key.c | 88 ++++------- sys/netipsec/keysock.c | 19 +-- sys/netipsec/xform_ah.c | 13 +- sys/netipsec/xform_esp.c | 13 +- sys/netipsec/xform_ipcomp.c | 4 +- sys/netpfil/ipfw/ip_dn_io.c | 3 +- sys/netpfil/ipfw/ip_fw2.c | 18 +-- sys/netpfil/ipfw/nat64/nat64_translate.c | 6 +- sys/netpfil/ipfw/nat64/nat64clat.c | 3 +- sys/netpfil/ipfw/nat64/nat64lsn.c | 20 +-- sys/netpfil/ipfw/nat64/nat64stl.c | 3 +- sys/netpfil/ipfw/nptv6/nptv6.c | 3 +- sys/netpfil/ipfw/pmod/tcpmod.c | 18 +-- sys/netpfil/pf/if_pfsync.c | 20 +-- sys/netpfil/pf/pf.c | 9 +- 93 files changed, 502 insertions(+), 951 deletions(-) diff --git a/sys/net/bridgestp.c b/sys/net/bridgestp.c index eb44f893183b..de1b2ea6eaf0 100644 --- a/sys/net/bridgestp.c +++ b/sys/net/bridgestp.c @@ -477,8 +477,7 @@ bstp_input(struct bstp_port *bp, struct ifnet *ifp, struct mbuf *m) if (m->m_pkthdr.len > len) m_adj(m, len - m->m_pkthdr.len); - if (m->m_len < sizeof(tpdu) && - (m = m_pullup(m, sizeof(tpdu))) == NULL) + if ((m = m_pullup(m, sizeof(tpdu))) == NULL) goto out; memcpy(&tpdu, mtod(m, char *), sizeof(tpdu)); @@ -543,8 +542,7 @@ bstp_received_stp(struct bstp_state *bs, struct bstp_port *bp, bstp_received_tcn(bs, bp, &tu); break; case BSTP_MSGTYPE_CFG: - if ((*mp)->m_len < BSTP_BPDU_STP_LEN && - (*mp = m_pullup(*mp, BSTP_BPDU_STP_LEN)) == NULL) + if ((*mp = m_pullup(*mp, BSTP_BPDU_STP_LEN)) == NULL) return; memcpy(&cpdu, mtod(*mp, char *), BSTP_BPDU_STP_LEN); @@ -564,8 +562,7 @@ bstp_received_rstp(struct bstp_state *bs, struct bstp_port *bp, if (tpdu->tbu_bpdutype != BSTP_MSGTYPE_RSTP) return; - if ((*mp)->m_len < BSTP_BPDU_RSTP_LEN && - (*mp = m_pullup(*mp, BSTP_BPDU_RSTP_LEN)) == NULL) + if ((*mp = m_pullup(*mp, BSTP_BPDU_RSTP_LEN)) == NULL) return; memcpy(&cpdu, mtod(*mp, char *), BSTP_BPDU_RSTP_LEN); diff --git a/sys/net/debugnet.c b/sys/net/debugnet.c index 178aefafc6b3..225771a63f4d 100644 --- a/sys/net/debugnet.c +++ b/sys/net/debugnet.c @@ -391,13 +391,9 @@ debugnet_handle_rx_msg(struct debugnet_pcb *pcb, struct mbuf **mb) } /* Get ND header. */ - if (m->m_len < sizeof(*dnh)) { - m = m_pullup(m, sizeof(*dnh)); - *mb = m; - if (m == NULL) { - DNETDEBUG("m_pullup failed\n"); - return; - } + if ((*mb = m = m_pullup(m, sizeof(*dnh))) == NULL) { + DNETDEBUG("m_pullup failed\n"); + return; } dnh = mtod(m, const struct debugnet_msg_hdr *); @@ -451,13 +447,9 @@ debugnet_handle_ack(struct debugnet_pcb *pcb, struct mbuf **mb, uint16_t sport) m = *mb; /* Get Ack. */ - if (m->m_len < sizeof(*dn_ack)) { - m = m_pullup(m, sizeof(*dn_ack)); - *mb = m; - if (m == NULL) { - DNETDEBUG("m_pullup failed\n"); - return; - } + if ((*mb = m = m_pullup(m, sizeof(*dn_ack))) == NULL) { + DNETDEBUG("m_pullup failed\n"); + return; } dn_ack = mtod(m, const struct debugnet_ack *); @@ -495,13 +487,9 @@ debugnet_handle_udp(struct debugnet_pcb *pcb, struct mbuf **mb) } /* Get UDP headers. */ - if (m->m_len < sizeof(*udp)) { - m = m_pullup(m, sizeof(*udp)); - *mb = m; - if (m == NULL) { - DNETDEBUG("m_pullup failed\n"); - return; - } + if ((*mb = m = m_pullup(m, sizeof(*udp))) == NULL) { + DNETDEBUG("m_pullup failed\n"); + return; } udp = mtod(m, const struct udphdr *); diff --git a/sys/net/debugnet_inet.c b/sys/net/debugnet_inet.c index eb228e326f99..f93c8d9b8a1e 100644 --- a/sys/net/debugnet_inet.c +++ b/sys/net/debugnet_inet.c @@ -93,13 +93,9 @@ debugnet_handle_ip(struct debugnet_pcb *pcb, struct mbuf **mb) DNETDEBUG("dropping packet too small for IP header\n"); return; } - if (m->m_len < sizeof(struct ip)) { - m = m_pullup(m, sizeof(struct ip)); - *mb = m; - if (m == NULL) { - DNETDEBUG("m_pullup failed\n"); - return; - } + if ((*mb = m = m_pullup(m, sizeof(struct ip))) == NULL) { + DNETDEBUG("m_pullup failed\n"); + return; } ip = mtod(m, struct ip *); @@ -115,15 +111,11 @@ debugnet_handle_ip(struct debugnet_pcb *pcb, struct mbuf **mb) DNETDEBUG("bad IP header length (%hu)\n", hlen); return; } - if (hlen > m->m_len) { - m = m_pullup(m, hlen); - *mb = m; - if (m == NULL) { - DNETDEBUG("m_pullup failed\n"); - return; - } - ip = mtod(m, struct ip *); + if ((*mb = m = m_pullup(m, hlen)) == NULL) { + DNETDEBUG("m_pullup failed\n"); + return; } + ip = mtod(m, struct ip *); /* Ignore packets with IP options. */ if (hlen > sizeof(struct ip)) { DNETDEBUG("drop packet with IP options\n"); @@ -287,13 +279,9 @@ debugnet_handle_arp(struct debugnet_pcb *pcb, struct mbuf **mb) m = *mb; ifp = m->m_pkthdr.rcvif; - if (m->m_len < sizeof(struct arphdr)) { - m = m_pullup(m, sizeof(struct arphdr)); - *mb = m; - if (m == NULL) { - DNETDEBUG("runt packet: m_pullup failed\n"); - return; - } + if ((*mb = m = m_pullup(m, sizeof(struct arphdr))) == NULL) { + DNETDEBUG("runt packet: m_pullup failed\n"); + return; } ah = mtod(m, struct arphdr *); @@ -308,13 +296,9 @@ debugnet_handle_arp(struct debugnet_pcb *pcb, struct mbuf **mb) return; } req_len = arphdr_len2(ifp->if_addrlen, sizeof(struct in_addr)); - if (m->m_len < req_len) { - m = m_pullup(m, req_len); - *mb = m; - if (m == NULL) { - DNETDEBUG("runt packet: m_pullup failed\n"); - return; - } + if ((*mb = m = m_pullup(m, req_len)) == NULL) { + DNETDEBUG("runt packet: m_pullup failed\n"); + return; } ah = mtod(m, struct arphdr *); diff --git a/sys/net/ieee8023ad_lacp.c b/sys/net/ieee8023ad_lacp.c index 5d5fc88f205f..7861dfe455ca 100644 --- a/sys/net/ieee8023ad_lacp.c +++ b/sys/net/ieee8023ad_lacp.c @@ -279,12 +279,8 @@ lacp_pdu_input(struct lacp_port *lp, struct mbuf *m) goto bad; } - if (m->m_len < sizeof(*du)) { - m = m_pullup(m, sizeof(*du)); - if (m == NULL) { - return (ENOMEM); - } - } + if ((m = m_pullup(m, sizeof(*du))) == NULL) + return (ENOMEM); du = mtod(m, struct lacpdu *); @@ -1922,12 +1918,8 @@ lacp_marker_input(struct lacp_port *lp, struct mbuf *m) goto bad; } - if (m->m_len < sizeof(*mdu)) { - m = m_pullup(m, sizeof(*mdu)); - if (m == NULL) { - return (ENOMEM); - } - } + if ((m = m_pullup(m, sizeof(*mdu))) == NULL) + return (ENOMEM); mdu = mtod(m, struct markerdu *); diff --git a/sys/net/if_bridge.c b/sys/net/if_bridge.c index 090b7e055662..04d773a58b45 100644 --- a/sys/net/if_bridge.c +++ b/sys/net/if_bridge.c @@ -2520,11 +2520,8 @@ bridge_output(struct ifnet *ifp, struct mbuf *m, struct sockaddr *sa, NET_EPOCH_ASSERT(); - if (m->m_len < ETHER_HDR_LEN) { - m = m_pullup(m, ETHER_HDR_LEN); - if (m == NULL) - return (0); - } + if ((m = m_pullup(m, ETHER_HDR_LEN)) == NULL) + return (0); sbif = ifp->if_bridge; sc = sbif->bif_sc; @@ -2855,11 +2852,8 @@ bridge_input(struct ifnet *ifp, struct mbuf *m) NET_EPOCH_ASSERT(); /* We need the Ethernet header later, so make sure we have it now. */ - if (m->m_len < ETHER_HDR_LEN) { - m = m_pullup(m, ETHER_HDR_LEN); - if (m == NULL) - return (NULL); - } + if ((m = m_pullup(m, ETHER_HDR_LEN)) == NULL) + return (NULL); eh = mtod(m, struct ether_header *); vlan = VLANTAGOF(m); @@ -3957,12 +3951,9 @@ bridge_pfil(struct mbuf **mp, struct ifnet *bifp, struct ifnet *ifp, int dir) if (V_pfil_bridge == 0 && V_pfil_member == 0 && V_pfil_ipfw == 0) return (0); /* filtering is disabled */ - if ((*mp)->m_len < ETHER_HDR_LEN) { - *mp = m_pullup(*mp, ETHER_HDR_LEN); - if (*mp == NULL) { + if ((*mp = m_pullup(*mp, ETHER_HDR_LEN)) == NULL) { printf("%s: m_pullup failed\n", __func__); return (-1); - } } eh1 = mtod(*mp, struct ether_header *); @@ -3976,14 +3967,11 @@ bridge_pfil(struct mbuf **mp, struct ifnet *bifp, struct ifnet *ifp, int dir) i = min((*mp)->m_pkthdr.len, ETHER_HDR_LEN + sizeof(struct llc)); - if ((*mp)->m_len < i) { - *mp = m_pullup(*mp, i); - if (*mp == NULL) { - printf("%s: m_pullup failed\n", __func__); - return (-1); - } - eh1 = mtod(*mp, struct ether_header *); + if ((*mp = m_pullup(*mp, i)) == NULL) { + printf("%s: m_pullup failed\n", __func__); + return (-1); } + eh1 = mtod(*mp, struct ether_header *); if ((*mp)->m_len >= ETHER_HDR_LEN + sizeof(struct llc)) { llc2 = (struct llc *)(eh1 + 1); @@ -4130,13 +4118,9 @@ bridge_pfil(struct mbuf **mp, struct ifnet *bifp, struct ifnet *ifp, int dir) hlen = ip->ip_hl << 2; if (hlen < sizeof(struct ip)) goto bad; - if (hlen > (*mp)->m_len) { - if ((*mp = m_pullup(*mp, hlen)) == NULL) - goto bad; - ip = mtod(*mp, struct ip *); - if (ip == NULL) - goto bad; - } + if ((*mp = m_pullup(*mp, hlen)) == NULL) + goto bad; + ip = mtod(*mp, struct ip *); ip->ip_sum = 0; if (hlen == sizeof(struct ip)) ip->ip_sum = in_cksum_hdr(ip); @@ -4233,11 +4217,9 @@ bridge_ip_checkbasic(struct mbuf **mp) KMOD_IPSTAT_INC(ips_toosmall); goto bad; } - } else if (__predict_false(m->m_len < sizeof (struct ip))) { - if ((m = m_pullup(m, sizeof (struct ip))) == NULL) { - KMOD_IPSTAT_INC(ips_toosmall); - goto bad; - } + } else if ((m = m_pullup(m, sizeof (struct ip))) == NULL) { + KMOD_IPSTAT_INC(ips_toosmall); + goto bad; } ip = mtod(m, struct ip *); if (ip == NULL) goto bad; @@ -4251,14 +4233,11 @@ bridge_ip_checkbasic(struct mbuf **mp) KMOD_IPSTAT_INC(ips_badhlen); goto bad; } - if (hlen > m->m_len) { - if ((m = m_pullup(m, hlen)) == NULL) { - KMOD_IPSTAT_INC(ips_badhlen); - goto bad; - } - ip = mtod(m, struct ip *); - if (ip == NULL) goto bad; + if ((m = m_pullup(m, hlen)) == NULL) { + KMOD_IPSTAT_INC(ips_badhlen); + goto bad; } + ip = mtod(m, struct ip *); if (m->m_pkthdr.csum_flags & CSUM_IP_CHECKED) { sum = !(m->m_pkthdr.csum_flags & CSUM_IP_VALID); @@ -4315,6 +4294,7 @@ static int bridge_ip6_checkbasic(struct mbuf **mp) { struct mbuf *m = *mp; + struct ifnet *inifp = m->m_pkthdr.rcvif; struct ip6_hdr *ip6; /* @@ -4324,7 +4304,6 @@ bridge_ip6_checkbasic(struct mbuf **mp) * IPv6 header is in the first mbuf of the chain. */ if (IP6_HDR_ALIGNED_P(mtod(m, char *)) == 0) { - struct ifnet *inifp = m->m_pkthdr.rcvif; if ((m = m_copyup(m, sizeof(struct ip6_hdr), (max_linkhdr + 3) & ~3)) == NULL) { /* XXXJRT new stat, please */ @@ -4332,13 +4311,10 @@ bridge_ip6_checkbasic(struct mbuf **mp) in6_ifstat_inc(inifp, ifs6_in_hdrerr); goto bad; } - } else if (__predict_false(m->m_len < sizeof(struct ip6_hdr))) { - struct ifnet *inifp = m->m_pkthdr.rcvif; - if ((m = m_pullup(m, sizeof(struct ip6_hdr))) == NULL) { - IP6STAT_INC(ip6s_toosmall); - in6_ifstat_inc(inifp, ifs6_in_hdrerr); - goto bad; - } + } else if ((m = m_pullup(m, sizeof(struct ip6_hdr))) == NULL) { + IP6STAT_INC(ip6s_toosmall); + in6_ifstat_inc(inifp, ifs6_in_hdrerr); + goto bad; } ip6 = mtod(m, struct ip6_hdr *); @@ -4373,8 +4349,7 @@ bridge_fragment(struct ifnet *ifp, struct mbuf **mp, struct ether_header *eh, struct ip *ip; int error = -1; - if (m->m_len < sizeof(struct ip) && - (m = m_pullup(m, sizeof(struct ip))) == NULL) { + if ((m = m_pullup(m, sizeof(struct ip))) == NULL) { KMOD_IPSTAT_INC(ips_odropped); goto dropit; } diff --git a/sys/net/if_ethersubr.c b/sys/net/if_ethersubr.c index 69b4e1470d4b..e44308201a4f 100644 --- a/sys/net/if_ethersubr.c +++ b/sys/net/if_ethersubr.c @@ -575,8 +575,7 @@ ether_input_internal(struct ifnet *ifp, struct mbuf *m) ((etype == ETHERTYPE_VLAN) || (etype == ETHERTYPE_QINQ))) { struct ether_vlan_header *evl; - if (m->m_len < sizeof(*evl) && - (m = m_pullup(m, sizeof(*evl))) == NULL) { + if ((m = m_pullup(m, sizeof(*evl))) == NULL) { #ifdef DIAGNOSTIC if_printf(ifp, "cannot pullup VLAN header\n"); #endif @@ -1259,11 +1258,8 @@ ether_vlanencap_proto(struct mbuf *m, uint16_t tag, uint16_t proto) return (NULL); /* M_PREPEND takes care of m_len, m_pkthdr.len for us */ - if (m->m_len < sizeof(*evl)) { - m = m_pullup(m, sizeof(*evl)); - if (m == NULL) - return (NULL); - } + if ((m = m_pullup(m, sizeof(*evl))) == NULL) + return (NULL); /* * Transform the Ethernet header into an Ethernet header diff --git a/sys/net/if_geneve.c b/sys/net/if_geneve.c index 7d18e45741a3..e68bdfb76e4b 100644 --- a/sys/net/if_geneve.c +++ b/sys/net/if_geneve.c @@ -3096,18 +3096,14 @@ geneve_input_ether(struct geneve_softc *sc, struct mbuf **m0, if (m->m_pkthdr.len < ETHER_HDR_LEN) return (EINVAL); - if (m->m_len < ETHER_HDR_LEN && - (m = m_pullup(m, ETHER_HDR_LEN)) == NULL) { - *m0 = NULL; + if ((*m0 = m = m_pullup(m, ETHER_HDR_LEN)) == NULL) return (ENOBUFS); - } eh = mtod(m, struct ether_header *); info->ethertype = ntohs(eh->ether_type); if (sc->gnv_flags & GENEVE_FLAG_LEARN) geneve_ftable_learn(sc, sa, eh->ether_shost); - *m0 = m; return (0); } @@ -3128,8 +3124,7 @@ geneve_input_inherit(struct geneve_softc *sc, struct mbuf **m0, if (m->m_pkthdr.len < offset) return (EINVAL); - if (m->m_len < offset && - (*m0 = m = m_pullup(m, offset)) == NULL) + if ((*m0 = m = m_pullup(m, offset)) == NULL) return (ENOBUFS); iphdr = mtodo(m, offset - sizeof(struct ip)); @@ -3147,8 +3142,7 @@ geneve_input_inherit(struct geneve_softc *sc, struct mbuf **m0, if (m->m_pkthdr.len < offset) return (EINVAL); - if (m->m_len < offset && - (*m0 = m = m_pullup(m, offset)) == NULL) + if ((*m0 = m = m_pullup(m, offset)) == NULL) return (ENOBUFS); ip6hdr = mtodo(m, offset - sizeof(struct ip6_hdr)); @@ -3171,8 +3165,7 @@ geneve_input_inherit(struct geneve_softc *sc, struct mbuf **m0, if (m->m_pkthdr.len < offset) return (EINVAL); - if (m->m_len < offset && - (*m0 = m = m_pullup(m, offset)) == NULL) + if ((*m0 = m = m_pullup(m, offset)) == NULL) return (ENOBUFS); info->isr = NETISR_ARP; break; diff --git a/sys/net/if_gif.c b/sys/net/if_gif.c index c12c0de98864..82fd76a63103 100644 --- a/sys/net/if_gif.c +++ b/sys/net/if_gif.c @@ -470,9 +470,7 @@ gif_transmit(struct ifnet *ifp, struct mbuf *m) #ifdef INET case AF_INET: proto = IPPROTO_IPV4; - if (m->m_len < sizeof(struct ip)) - m = m_pullup(m, sizeof(struct ip)); - if (m == NULL) { + if ((m = m_pullup(m, sizeof(struct ip))) == NULL) { error = ENOBUFS; goto err; } @@ -484,9 +482,7 @@ gif_transmit(struct ifnet *ifp, struct mbuf *m) #ifdef INET6 case AF_INET6: proto = IPPROTO_IPV6; - if (m->m_len < sizeof(struct ip6_hdr)) - m = m_pullup(m, sizeof(struct ip6_hdr)); - if (m == NULL) { + if ((m = m_pullup(m, sizeof(struct ip6_hdr))) == NULL) { error = ENOBUFS; goto err; } @@ -592,9 +588,7 @@ gif_input(struct mbuf *m, struct ifnet *ifp, int proto, uint8_t ecn) #ifdef INET case IPPROTO_IPV4: af = AF_INET; - if (m->m_len < sizeof(struct ip)) - m = m_pullup(m, sizeof(struct ip)); - if (m == NULL) + if ((m = m_pullup(m, sizeof(struct ip))) == NULL) goto drop; ip = mtod(m, struct ip *); if (ip_ecn_egress((ifp->if_flags & IFF_LINK1) ? ECN_ALLOWED: @@ -607,9 +601,7 @@ gif_input(struct mbuf *m, struct ifnet *ifp, int proto, uint8_t ecn) #ifdef INET6 case IPPROTO_IPV6: af = AF_INET6; - if (m->m_len < sizeof(struct ip6_hdr)) - m = m_pullup(m, sizeof(struct ip6_hdr)); - if (m == NULL) + if ((m = m_pullup(m, sizeof(struct ip6_hdr))) == NULL) goto drop; t = htonl((uint32_t)ecn << 20); ip6 = mtod(m, struct ip6_hdr *); @@ -675,9 +667,7 @@ gif_input(struct mbuf *m, struct ifnet *ifp, int proto, uint8_t ecn) case AF_LINK: n = sizeof(struct etherip_header) + sizeof(struct ether_header); - if (n > m->m_len) - m = m_pullup(m, n); - if (m == NULL) + if ((m = m_pullup(m, n)) == NULL) goto drop; eip = mtod(m, struct etherip_header *); if (eip->eip_ver != ETHERIP_VERSION) { diff --git a/sys/net/if_gre.c b/sys/net/if_gre.c index f29a98c1f365..971d7e01be0f 100644 --- a/sys/net/if_gre.c +++ b/sys/net/if_gre.c @@ -756,11 +756,8 @@ gre_input(struct mbuf *m, int off, int proto, void *arg) hlen = off + sizeof(struct grehdr) + 4 * sizeof(uint32_t); if (m->m_pkthdr.len < hlen) goto drop; - if (m->m_len < hlen) { - m = m_pullup(m, hlen); - if (m == NULL) - goto drop; - } + if ((m = m_pullup(m, hlen)) == NULL) + goto drop; gh = (struct grehdr *)mtodo(m, off); flags = ntohs(gh->gre_flags); if (flags & ~GRE_FLAGS_MASK) diff --git a/sys/net/if_me.c b/sys/net/if_me.c index 9e690daab166..38d33720cd78 100644 --- a/sys/net/if_me.c +++ b/sys/net/if_me.c @@ -480,9 +480,7 @@ me_input(struct mbuf *m, int off, int proto, void *arg) hlen = sizeof(struct mobhdr); if (m->m_pkthdr.len < sizeof(struct ip) + hlen) hlen -= sizeof(struct in_addr); - if (m->m_len < sizeof(struct ip) + hlen) - m = m_pullup(m, sizeof(struct ip) + hlen); - if (m == NULL) + if ((m = m_pullup(m, sizeof(struct ip) + hlen)) == NULL) goto drop; mh = (struct mobhdr *)mtodo(m, sizeof(struct ip)); /* check for wrong flags */ @@ -581,9 +579,7 @@ me_transmit(struct ifnet *ifp, struct mbuf *m) m_freem(m); goto drop; } - if (m->m_len < sizeof(struct ip)) - m = m_pullup(m, sizeof(struct ip)); - if (m == NULL) { + if ((m = m_pullup(m, sizeof(struct ip))) == NULL) { error = ENOBUFS; goto drop; } @@ -615,9 +611,7 @@ me_transmit(struct ifnet *ifp, struct mbuf *m) error = ENOBUFS; goto drop; } - if (m->m_len < sizeof(struct ip) + hlen) - m = m_pullup(m, sizeof(struct ip) + hlen); - if (m == NULL) { + if ((m = m_pullup(m, sizeof(struct ip) + hlen)) == NULL) { error = ENOBUFS; goto drop; } diff --git a/sys/net/if_stf.c b/sys/net/if_stf.c index bf0092747d5a..4aaf78291ab2 100644 --- a/sys/net/if_stf.c +++ b/sys/net/if_stf.c @@ -537,14 +537,10 @@ stf_output(struct ifnet *ifp, struct mbuf *m, const struct sockaddr *dst, return (ENETDOWN); } - if (m->m_len < sizeof(*ip6)) { - m = m_pullup(m, sizeof(*ip6)); - if (!m) { - if_inc_counter(ifp, IFCOUNTER_OERRORS, 1); - SDT_PROBE2(if_stf, , stf_output, error, ENOBUFS, - __LINE__); - return (ENOBUFS); - } + if ((m = m_pullup(m, sizeof(*ip6))) == NULL) { + if_inc_counter(ifp, IFCOUNTER_OERRORS, 1); + SDT_PROBE2(if_stf, , stf_output, error, ENOBUFS, __LINE__); + return (ENOBUFS); } ip6 = mtod(m, struct ip6_hdr *); tos = IPV6_TRAFFIC_CLASS(ip6); @@ -762,13 +758,9 @@ in_stf_input(struct mbuf *m, int off, int proto, void *arg) otos = ip.ip_tos; m_adj(m, off); - if (m->m_len < sizeof(*ip6)) { - m = m_pullup(m, sizeof(*ip6)); - if (!m) { - SDT_PROBE2(if_stf, , stf_input, out, IPPROTO_DONE, - __LINE__); - return (IPPROTO_DONE); - } + if ((m = m_pullup(m, sizeof(*ip6))) == NULL) { + SDT_PROBE2(if_stf, , stf_input, out, IPPROTO_DONE, __LINE__); + return (IPPROTO_DONE); } ip6 = mtod(m, struct ip6_hdr *); diff --git a/sys/net/if_tuntap.c b/sys/net/if_tuntap.c index b1ef08783c72..91f4478907ef 100644 --- a/sys/net/if_tuntap.c +++ b/sys/net/if_tuntap.c @@ -2005,8 +2005,7 @@ tunwrite_l3(struct tuntap_softc *tp, struct mbuf *m) TUN_LOCK(tp); if (tp->tun_flags & TUN_IFHEAD) { TUN_UNLOCK(tp); - if (m->m_len < sizeof(family) && - (m = m_pullup(m, sizeof(family))) == NULL) + if ((m = m_pullup(m, sizeof(family))) == NULL) return (ENOBUFS); family = ntohl(*mtod(m, u_int32_t *)); m_adj(m, sizeof(family)); diff --git a/sys/net/if_vlan.c b/sys/net/if_vlan.c index 959c68a7f32b..73223187364e 100644 --- a/sys/net/if_vlan.c +++ b/sys/net/if_vlan.c @@ -1569,8 +1569,7 @@ vlan_input(struct ifnet *ifp, struct mbuf *m) */ switch (ifp->if_type) { case IFT_ETHER: - if (m->m_len < sizeof(*evl) && - (m = m_pullup(m, sizeof(*evl))) == NULL) { + if ((m = m_pullup(m, sizeof(*evl))) == NULL) { if_printf(ifp, "cannot pullup VLAN header\n"); return; } diff --git a/sys/net/if_vxlan.c b/sys/net/if_vxlan.c index fbe022d7fbde..5a23c316f202 100644 --- a/sys/net/if_vxlan.c +++ b/sys/net/if_vxlan.c @@ -2875,8 +2875,7 @@ vxlan_input(struct vxlan_socket *vso, uint32_t vni, struct mbuf **m0, return (ENOENT); ifp = sc->vxl_ifp; - if (m->m_len < ETHER_HDR_LEN && - (m = *m0 = m_pullup(m, ETHER_HDR_LEN)) == NULL) { + if ((m = *m0 = m_pullup(m, ETHER_HDR_LEN)) == NULL) { error = ENOBUFS; goto out; } diff --git a/sys/net/rtsock.c b/sys/net/rtsock.c index 61403cde28e7..fffe3e8d32f1 100644 --- a/sys/net/rtsock.c +++ b/sys/net/rtsock.c @@ -1085,8 +1085,7 @@ rts_send(struct socket *so, int flags, struct mbuf *m, fibnum = so->so_fibnum; #define senderr(e) { error = e; goto flush;} - if (m == NULL || ((m->m_len < sizeof(long)) && - (m = m_pullup(m, sizeof(long))) == NULL)) + if (m == NULL || (m = m_pullup(m, sizeof(long))) == NULL) return (ENOBUFS); if ((m->m_flags & M_PKTHDR) == 0) panic("route_output"); diff --git a/sys/net80211/ieee80211_adhoc.c b/sys/net80211/ieee80211_adhoc.c index 16f20c0c636b..cd6ee0ec1202 100644 --- a/sys/net80211/ieee80211_adhoc.c +++ b/sys/net80211/ieee80211_adhoc.c @@ -452,8 +452,7 @@ adhoc_input(struct ieee80211_node *ni, struct mbuf *m, switch (type) { case IEEE80211_FC0_TYPE_DATA: hdrspace = ieee80211_hdrspace(ic, wh); - if (m->m_len < hdrspace && - (m = m_pullup(m, hdrspace)) == NULL) { + if ((m = m_pullup(m, hdrspace)) == NULL) { IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_ANY, ni->ni_macaddr, NULL, "data too short: expecting %u", hdrspace); diff --git a/sys/net80211/ieee80211_hostap.c b/sys/net80211/ieee80211_hostap.c index 3505f7ba66e0..7f14ef2c8859 100644 --- a/sys/net80211/ieee80211_hostap.c +++ b/sys/net80211/ieee80211_hostap.c @@ -582,8 +582,7 @@ hostap_input(struct ieee80211_node *ni, struct mbuf *m, switch (type) { case IEEE80211_FC0_TYPE_DATA: hdrspace = ieee80211_hdrspace(ic, wh); - if (m->m_len < hdrspace && - (m = m_pullup(m, hdrspace)) == NULL) { + if ((m = m_pullup(m, hdrspace)) == NULL) { IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_ANY, ni->ni_macaddr, NULL, "data too short: expecting %u", hdrspace); diff --git a/sys/net80211/ieee80211_input.c b/sys/net80211/ieee80211_input.c index a5f2abd747d6..8a7a7a8b90fd 100644 --- a/sys/net80211/ieee80211_input.c +++ b/sys/net80211/ieee80211_input.c @@ -319,8 +319,7 @@ ieee80211_decap(struct ieee80211vap *vap, struct mbuf *m, int hdrlen, KASSERT(hdrlen <= sizeof(wh), ("hdrlen %d > max %zd", hdrlen, sizeof(wh))); - if (m->m_len < hdrlen + sizeof(*llc) && - (m = m_pullup(m, hdrlen + sizeof(*llc))) == NULL) { + if ((m = m_pullup(m, hdrlen + sizeof(*llc))) == NULL) { vap->iv_stats.is_rx_tooshort++; /* XXX msg */ return NULL; @@ -395,7 +394,7 @@ ieee80211_decap1(struct mbuf *m, int *framelen) * copy the 802.3 header up to where it belongs and * adjust the mbuf contents to remove the void. */ - if (m->m_len < FF_LLC_SIZE && (m = m_pullup(m, FF_LLC_SIZE)) == NULL) + if ((m = m_pullup(m, FF_LLC_SIZE)) == NULL) return NULL; eh = mtod(m, struct ether_header *); /* 802.3 header is first */ diff --git a/sys/net80211/ieee80211_mesh.c b/sys/net80211/ieee80211_mesh.c index 900b0c2ad4cd..e2be5bd6fba4 100644 --- a/sys/net80211/ieee80211_mesh.c +++ b/sys/net80211/ieee80211_mesh.c @@ -1258,8 +1258,7 @@ mesh_decap(struct ieee80211vap *vap, struct mbuf *m, int hdrlen, int meshdrlen) struct llc *llc; int ae; - if (m->m_len < hdrlen + sizeof(*llc) && - (m = m_pullup(m, hdrlen + sizeof(*llc))) == NULL) { + if ((m = m_pullup(m, hdrlen + sizeof(*llc))) == NULL) { IEEE80211_DPRINTF(vap, IEEE80211_MSG_ANY, "discard data frame: %s", "m_pullup failed"); vap->iv_stats.is_rx_tooshort++; @@ -1673,9 +1672,8 @@ mesh_input(struct ieee80211_node *ni, struct mbuf *m, } /* pull up enough to get to the mesh control */ - if (m->m_len < hdrspace + sizeof(struct ieee80211_meshcntl) && - (m = m_pullup(m, hdrspace + - sizeof(struct ieee80211_meshcntl))) == NULL) { + if ((m = m_pullup(m, hdrspace + + sizeof(struct ieee80211_meshcntl))) == NULL) { IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_ANY, ni->ni_macaddr, NULL, "data too short: expecting %u", hdrspace); @@ -1696,7 +1694,6 @@ mesh_input(struct ieee80211_node *ni, struct mbuf *m, /* pull complete hdrspace = ieee80211_hdrspace + meshcontrol */ if ((meshdrlen > sizeof(struct ieee80211_meshcntl)) && - (m->m_len < hdrspace) && ((m = m_pullup(m, hdrspace)) == NULL)) { IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_ANY, ni->ni_macaddr, NULL, diff --git a/sys/net80211/ieee80211_output.c b/sys/net80211/ieee80211_output.c index 116fc76a9ce1..fa7e08a4f722 100644 --- a/sys/net80211/ieee80211_output.c +++ b/sys/net80211/ieee80211_output.c @@ -365,8 +365,7 @@ ieee80211_start_pkt(struct ieee80211vap *vap, struct mbuf *m) * mbuf has the 802.3 header present (and contiguous). */ ni = NULL; - if (m->m_len < sizeof(struct ether_header) && - (m = m_pullup(m, sizeof(struct ether_header))) == NULL) { + if ((m = m_pullup(m, sizeof(struct ether_header))) == NULL) { IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, "discard frame, %s\n", "m_pullup failed"); vap->iv_stats.is_tx_nobuf++; /* XXX */ diff --git a/sys/net80211/ieee80211_sta.c b/sys/net80211/ieee80211_sta.c index 550f837a0013..36dacc7da48a 100644 --- a/sys/net80211/ieee80211_sta.c +++ b/sys/net80211/ieee80211_sta.c @@ -657,8 +657,7 @@ sta_input(struct ieee80211_node *ni, struct mbuf *m, switch (type) { case IEEE80211_FC0_TYPE_DATA: hdrspace = ieee80211_hdrspace(ic, wh); - if (m->m_len < hdrspace && - (m = m_pullup(m, hdrspace)) == NULL) { + if ((m = m_pullup(m, hdrspace)) == NULL) { IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_ANY, ni->ni_macaddr, NULL, "data too short: expecting %u", hdrspace); diff --git a/sys/net80211/ieee80211_superg.c b/sys/net80211/ieee80211_superg.c index cd1516302561..88a7b86040c7 100644 --- a/sys/net80211/ieee80211_superg.c +++ b/sys/net80211/ieee80211_superg.c @@ -285,8 +285,7 @@ ieee80211_ff_decap(struct ieee80211_node *ni, struct mbuf *m) */ if (m->m_pkthdr.len < 3*FF_LLC_SIZE) return m; - if (m->m_len < FF_LLC_SIZE && - (m = m_pullup(m, FF_LLC_SIZE)) == NULL) { + if ((m = m_pullup(m, FF_LLC_SIZE)) == NULL) { IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_ANY, ni->ni_macaddr, "fast-frame", "%s", "m_pullup(llc) failed"); diff --git a/sys/net80211/ieee80211_wds.c b/sys/net80211/ieee80211_wds.c index 75c37e49423a..5f44c312bf8b 100644 --- a/sys/net80211/ieee80211_wds.c +++ b/sys/net80211/ieee80211_wds.c @@ -508,8 +508,7 @@ wds_input(struct ieee80211_node *ni, struct mbuf *m, switch (type) { case IEEE80211_FC0_TYPE_DATA: hdrspace = ieee80211_hdrspace(ic, wh); - if (m->m_len < hdrspace && - (m = m_pullup(m, hdrspace)) == NULL) { + if ((m = m_pullup(m, hdrspace)) == NULL) { IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_ANY, ni->ni_macaddr, NULL, "data too short: expecting %u", hdrspace); diff --git a/sys/netgraph/bluetooth/hci/ng_hci_var.h b/sys/netgraph/bluetooth/hci/ng_hci_var.h index a3f18779405b..6383e1c13931 100644 --- a/sys/netgraph/bluetooth/hci/ng_hci_var.h +++ b/sys/netgraph/bluetooth/hci/ng_hci_var.h @@ -51,9 +51,7 @@ MALLOC_DECLARE(M_NETGRAPH_HCI); /* Wrapper around m_pullup */ #define NG_HCI_M_PULLUP(m, s) \ do { \ - if ((m)->m_len < (s)) \ - (m) = m_pullup((m), (s)); \ - if ((m) == NULL) \ + if (((m) = m_pullup((m), (s))) == NULL) \ NG_HCI_ALERT("%s: %s - m_pullup(%zd) failed\n", \ __func__, NG_NODE_NAME(unit->node), (s)); \ } while (0) diff --git a/sys/netgraph/bluetooth/l2cap/ng_l2cap_misc.c b/sys/netgraph/bluetooth/l2cap/ng_l2cap_misc.c index d8e55cd07ab9..60cc16ba5433 100644 --- a/sys/netgraph/bluetooth/l2cap/ng_l2cap_misc.c +++ b/sys/netgraph/bluetooth/l2cap/ng_l2cap_misc.c @@ -594,7 +594,7 @@ struct mbuf * ng_l2cap_prepend(struct mbuf *m, int size) { M_PREPEND(m, size, M_NOWAIT); - if (m == NULL || (m->m_len < size && (m = m_pullup(m, size)) == NULL)) + if (m == NULL || (m = m_pullup(m, size)) == NULL) return (NULL); return (m); diff --git a/sys/netgraph/bluetooth/l2cap/ng_l2cap_var.h b/sys/netgraph/bluetooth/l2cap/ng_l2cap_var.h index 9a782bea46d2..8a9c55017061 100644 --- a/sys/netgraph/bluetooth/l2cap/ng_l2cap_var.h +++ b/sys/netgraph/bluetooth/l2cap/ng_l2cap_var.h @@ -51,9 +51,7 @@ MALLOC_DECLARE(M_NETGRAPH_L2CAP); /* Wrapper around m_pullup */ #define NG_L2CAP_M_PULLUP(m, s) \ do { \ - if ((m)->m_len < (s)) \ - (m) = m_pullup((m), (s)); \ - if ((m) == NULL) \ + if (((m) = m_pullup((m), (s))) == NULL) \ NG_L2CAP_ALERT("%s: %s - m_pullup(%zd) failed\n", \ __func__, NG_NODE_NAME(l2cap->node), (s)); \ } while (0) diff --git a/sys/netgraph/bluetooth/socket/ng_btsocket_hci_raw.c b/sys/netgraph/bluetooth/socket/ng_btsocket_hci_raw.c index b123322b33aa..a94c2f413f6d 100644 --- a/sys/netgraph/bluetooth/socket/ng_btsocket_hci_raw.c +++ b/sys/netgraph/bluetooth/socket/ng_btsocket_hci_raw.c @@ -1586,11 +1586,9 @@ ng_btsocket_hci_raw_send(struct socket *so, int flags, struct mbuf *m, goto drop; } - if (m->m_len < sizeof(ng_hci_cmd_pkt_t)) { - if ((m = m_pullup(m, sizeof(ng_hci_cmd_pkt_t))) == NULL) { - error = ENOBUFS; - goto drop; - } + if ((m = m_pullup(m, sizeof(ng_hci_cmd_pkt_t))) == NULL) { + error = ENOBUFS; + goto drop; } if (*mtod(m, u_int8_t *) != NG_HCI_CMD_PKT) { error = ENOTSUP; diff --git a/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap.c b/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap.c index 1f0c5f1b4751..4a3ba1aea693 100644 --- a/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap.c +++ b/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap.c @@ -1431,11 +1431,8 @@ ng_btsocket_l2cap_data_input(struct mbuf *m, hook_p hook) goto drop; } - if (m->m_len < sizeof(*hdr)) { - m = m_pullup(m, sizeof(*hdr)); - if (m == NULL) - goto drop; - } + if ((m = m_pullup(m, sizeof(*hdr))) == NULL) + goto drop; /* Strip L2CAP packet header and verify packet length */ *** 2652 LINES SKIPPED ***