Index: head/share/man/man9/mbuf.9 =================================================================== --- head/share/man/man9/mbuf.9 +++ head/share/man/man9/mbuf.9 @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd October 21, 2014 +.Dd January 5, 2015 .Dt MBUF 9 .Os .\" @@ -40,6 +40,7 @@ .Ss Mbuf allocation macros .Fn MGET "struct mbuf *mbuf" "int how" "short type" .Fn MGETHDR "struct mbuf *mbuf" "int how" "short type" +.Ft int .Fn MCLGET "struct mbuf *mbuf" "int how" .Fo MEXTADD .Fa "struct mbuf *mbuf" @@ -436,10 +437,12 @@ .Vt mbuf cluster to .Fa mbuf . -If the macro fails, the +On success, a non-zero value returned; otherwise, 0. +Historically, consumers would check for success by testing the .Dv M_EXT -flag will not be set in -.Fa mbuf . +flag on the mbuf, but this is now discouraged to avoid unnecessary awareness +of the implementation of external storage in protocol stacks and device +drivers. .It Fn M_ALIGN mbuf len Set the pointer .Fa mbuf->m_data Index: head/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c =================================================================== --- head/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c +++ head/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c @@ -386,8 +386,7 @@ if (m == NULL) return -1; if (sizeof(*tcp2) + hlen > MLEN) { - MCLGET(m, M_NOWAIT); - if ((m->m_flags & M_EXT) == 0) { + if (!(MCLGET(m, M_NOWAIT))) { FREE_MB_T(m); return -1; } @@ -610,8 +609,7 @@ code = icmptoicmp6unreach[code]; if (iclen + max_linkhdr + fin->fin_plen > avail) { - MCLGET(m, M_NOWAIT); - if ((m->m_flags & M_EXT) == 0) { + if (!(MCLGET(m, M_NOWAIT))) { FREE_MB_T(m); return -1; } Index: head/sys/dev/an/if_an.c =================================================================== --- head/sys/dev/an/if_an.c +++ head/sys/dev/an/if_an.c @@ -943,8 +943,7 @@ if_inc_counter(ifp, IFCOUNTER_IERRORS, 1); return; } - MCLGET(m, M_NOWAIT); - if (!(m->m_flags & M_EXT)) { + if (!(MCLGET(m, M_NOWAIT))) { m_freem(m); if_inc_counter(ifp, IFCOUNTER_IERRORS, 1); return; @@ -1034,8 +1033,7 @@ if_inc_counter(ifp, IFCOUNTER_IERRORS, 1); return; } - MCLGET(m, M_NOWAIT); - if (!(m->m_flags & M_EXT)) { + if (!(MCLGET(m, M_NOWAIT))) { m_freem(m); if_inc_counter(ifp, IFCOUNTER_IERRORS, 1); return; Index: head/sys/dev/bge/if_bge.c =================================================================== --- head/sys/dev/bge/if_bge.c +++ head/sys/dev/bge/if_bge.c @@ -1383,8 +1383,7 @@ if (m == NULL) return (ENOBUFS); - m_cljget(m, M_NOWAIT, MJUM9BYTES); - if (!(m->m_flags & M_EXT)) { + if (m_cljget(m, M_NOWAIT, MJUM9BYTES) == NULL) { m_freem(m); return (ENOBUFS); } Index: head/sys/dev/ce/if_ce.c =================================================================== --- head/sys/dev/ce/if_ce.c +++ head/sys/dev/ce/if_ce.c @@ -307,8 +307,7 @@ MGETHDR (m, M_NOWAIT, MT_DATA); if (! m) return 0; - MCLGET (m, M_NOWAIT); - if (! (m->m_flags & M_EXT)) { + if (!(MCLGET(m, M_NOWAIT))) { m_freem (m); return 0; } Index: head/sys/dev/cm/smc90cx6.c =================================================================== --- head/sys/dev/cm/smc90cx6.c +++ head/sys/dev/cm/smc90cx6.c @@ -540,10 +540,7 @@ */ if ((len + 2 + 2) > MHLEN) { /* attach an mbuf cluster */ - MCLGET(m, M_NOWAIT); - - /* Insist on getting a cluster */ - if ((m->m_flags & M_EXT) == 0) { + if (!(MCLGET(m, M_NOWAIT))) { if_inc_counter(ifp, IFCOUNTER_IERRORS, 1); goto cleanup; } Index: head/sys/dev/cp/if_cp.c =================================================================== --- head/sys/dev/cp/if_cp.c +++ head/sys/dev/cp/if_cp.c @@ -191,8 +191,7 @@ MGETHDR (m, M_NOWAIT, MT_DATA); if (! m) return 0; - MCLGET (m, M_NOWAIT); - if (! (m->m_flags & M_EXT)) { + if (!(MCLGET (m, M_NOWAIT))) { m_freem (m); return 0; } Index: head/sys/dev/cs/if_cs.c =================================================================== --- head/sys/dev/cs/if_cs.c +++ head/sys/dev/cs/if_cs.c @@ -716,8 +716,7 @@ return (-1); if (length > MHLEN) { - MCLGET(m, M_NOWAIT); - if (!(m->m_flags & M_EXT)) { + if (!(MCLGET(m, M_NOWAIT))) { m_freem(m); return (-1); } Index: head/sys/dev/ctau/if_ct.c =================================================================== --- head/sys/dev/ctau/if_ct.c +++ head/sys/dev/ctau/if_ct.c @@ -194,8 +194,7 @@ MGETHDR (m, M_NOWAIT, MT_DATA); if (! m) return 0; - MCLGET (m, M_NOWAIT); - if (! (m->m_flags & M_EXT)) { + if (!(MCLGET(m, M_NOWAIT))) { m_freem (m); return 0; } Index: head/sys/dev/ed/if_ed.c =================================================================== --- head/sys/dev/ed/if_ed.c +++ head/sys/dev/ed/if_ed.c @@ -1323,10 +1323,7 @@ */ if ((len + 2) > MHLEN) { /* Attach an mbuf cluster */ - MCLGET(m, M_NOWAIT); - - /* Insist on getting a cluster */ - if ((m->m_flags & M_EXT) == 0) { + if (!(MCLGET(m, M_NOWAIT))) { m_freem(m); return; } Index: head/sys/dev/ex/if_ex.c =================================================================== --- head/sys/dev/ex/if_ex.c +++ head/sys/dev/ex/if_ex.c @@ -745,8 +745,7 @@ while (pkt_len > 0) { if (pkt_len >= MINCLSIZE) { - MCLGET(m, M_NOWAIT); - if (m->m_flags & M_EXT) { + if (MCLGET(m, M_NOWAIT)) { m->m_len = MCLBYTES; } else { m_freem(ipkt); Index: head/sys/dev/fe/if_fe.c =================================================================== --- head/sys/dev/fe/if_fe.c +++ head/sys/dev/fe/if_fe.c @@ -1880,8 +1880,7 @@ /* Attach a cluster if this packet doesn't fit in a normal mbuf. */ if (len > MHLEN - NFS_MAGIC_OFFSET) { - MCLGET(m, M_NOWAIT); - if (!(m->m_flags & M_EXT)) { + if (!(MCLGET(m, M_NOWAIT))) { m_freem(m); return -1; } Index: head/sys/dev/hifn/hifn7751.c =================================================================== --- head/sys/dev/hifn/hifn7751.c +++ head/sys/dev/hifn/hifn7751.c @@ -1890,8 +1890,7 @@ goto err_srcmap; } if (totlen >= MINCLSIZE) { - MCLGET(m0, M_NOWAIT); - if ((m0->m_flags & M_EXT) == 0) { + if (!(MCLGET(m0, M_NOWAIT))) { hifnstats.hst_nomem_mcl++; err = sc->sc_cmdu ? ERESTART : ENOMEM; m_freem(m0); @@ -1913,8 +1912,7 @@ } len = MLEN; if (totlen >= MINCLSIZE) { - MCLGET(m, M_NOWAIT); - if ((m->m_flags & M_EXT) == 0) { + if (!(MCLGET(m, M_NOWAIT))) { hifnstats.hst_nomem_mcl++; err = sc->sc_cmdu ? ERESTART : ENOMEM; mlast->m_next = m; Index: head/sys/dev/ie/if_ie.c =================================================================== --- head/sys/dev/ie/if_ie.c +++ head/sys/dev/ie/if_ie.c @@ -728,8 +728,7 @@ m->m_len = MLEN; } if (resid >= MINCLSIZE) { - MCLGET(m, M_NOWAIT); - if (m->m_flags & M_EXT) + if (MCLGET(m, M_NOWAIT)) m->m_len = min(resid, MCLBYTES); } else { if (resid < m->m_len) { Index: head/sys/dev/le/lance.c =================================================================== --- head/sys/dev/le/lance.c +++ head/sys/dev/le/lance.c @@ -398,8 +398,7 @@ while (totlen > 0) { if (totlen >= MINCLSIZE) { - MCLGET(m, M_NOWAIT); - if ((m->m_flags & M_EXT) == 0) + if (!(MCLGET(m, M_NOWAIT))) goto bad; len = MCLBYTES; } Index: head/sys/dev/lmc/if_lmc.c =================================================================== --- head/sys/dev/lmc/if_lmc.c +++ head/sys/dev/lmc/if_lmc.c @@ -2689,8 +2689,7 @@ printf("%s: rxintr_setup: MGETHDR() failed\n", NAME_UNIT); return 0; } - MCLGET(m, M_NOWAIT); - if ((m->m_flags & M_EXT) == 0) + if (!(MCLGET(m, M_NOWAIT))) { m_freem(m); sc->status.cntrs.rxdma++; Index: head/sys/dev/mn/if_mn.c =================================================================== --- head/sys/dev/mn/if_mn.c +++ head/sys/dev/mn/if_mn.c @@ -1165,8 +1165,7 @@ mn_free_desc(dp); return; /* ENOBUFS */ } - MCLGET(m, M_NOWAIT); - if((m->m_flags & M_EXT) == 0) { + if (!(MCLGET(m, M_NOWAIT))) { mn_free_desc(dp); m_freem(m); return; /* ENOBUFS */ Index: head/sys/dev/my/if_my.c =================================================================== --- head/sys/dev/my/if_my.c +++ head/sys/dev/my/if_my.c @@ -1085,8 +1085,7 @@ "no memory for rx list -- packet dropped!\n"); return (ENOBUFS); } - MCLGET(m_new, M_NOWAIT); - if (!(m_new->m_flags & M_EXT)) { + if (!(MCLGET(m_new, M_NOWAIT))) { device_printf(sc->my_dev, "no memory for rx list -- packet dropped!\n"); m_freem(m_new); @@ -1352,8 +1351,7 @@ return (1); } if (m_head->m_pkthdr.len > MHLEN) { - MCLGET(m_new, M_NOWAIT); - if (!(m_new->m_flags & M_EXT)) { + if (!(MCLGET(m_new, M_NOWAIT))) { m_freem(m_new); device_printf(sc->my_dev, "no memory for tx list"); return (1); Index: head/sys/dev/pcn/if_pcn.c =================================================================== --- head/sys/dev/pcn/if_pcn.c +++ head/sys/dev/pcn/if_pcn.c @@ -803,8 +803,7 @@ if (m_new == NULL) return(ENOBUFS); - MCLGET(m_new, M_NOWAIT); - if (!(m_new->m_flags & M_EXT)) { + if (!(MCLGET(m_new, M_NOWAIT))) { m_freem(m_new); return(ENOBUFS); } Index: head/sys/dev/pdq/pdq_freebsd.h =================================================================== --- head/sys/dev/pdq/pdq_freebsd.h +++ head/sys/dev/pdq/pdq_freebsd.h @@ -190,8 +190,7 @@ PDQ_OS_DATABUF_T *x_m0; \ MGETHDR(x_m0, M_NOWAIT, MT_DATA); \ if (x_m0 != NULL) { \ - MCLGET(x_m0, M_NOWAIT); \ - if ((x_m0->m_flags & M_EXT) == 0) { \ + if (!(MCLGET(x_m0, M_NOWAIT))) { \ m_free(x_m0); \ (b) = NULL; \ } else { \ Index: head/sys/dev/pdq/pdq_ifsubr.c =================================================================== --- head/sys/dev/pdq/pdq_ifsubr.c +++ head/sys/dev/pdq/pdq_ifsubr.c @@ -748,8 +748,7 @@ printf("%s: can't alloc small buf\n", sc->sc_dev.dv_xname); return NULL; } - MCLGET(m, M_NOWAIT); - if ((m->m_flags & M_EXT) == 0) { + if (!(MCLGET(m, M_NOWAIT))) { printf("%s: can't alloc cluster\n", sc->sc_dev.dv_xname); m_free(m); return NULL; Index: head/sys/dev/pdq/pdqvar.h =================================================================== --- head/sys/dev/pdq/pdqvar.h +++ head/sys/dev/pdq/pdqvar.h @@ -216,8 +216,7 @@ PDQ_OS_DATABUF_T *x_m0; \ MGETHDR(x_m0, M_NOWAIT, MT_DATA); \ if (x_m0 != NULL) { \ - MCLGET(x_m0, M_NOWAIT); \ - if ((x_m0->m_flags & M_EXT) == 0) { \ + if (!(MCLGET(x_m0, M_NOWAIT))) { \ m_free(x_m0); \ (b) = NULL; \ } else { \ Index: head/sys/dev/safe/safe.c =================================================================== --- head/sys/dev/safe/safe.c +++ head/sys/dev/safe/safe.c @@ -1328,8 +1328,7 @@ goto errout; } if (totlen >= MINCLSIZE) { - MCLGET(m, M_NOWAIT); - if ((m->m_flags & M_EXT) == 0) { + if (!(MCLGET(m, M_NOWAIT))) { m_free(m); safestats.st_nomcl++; err = sc->sc_nqchip ? @@ -1355,8 +1354,7 @@ len = MLEN; } if (top && totlen >= MINCLSIZE) { - MCLGET(m, M_NOWAIT); - if ((m->m_flags & M_EXT) == 0) { + if (!(MCLGET(m, M_NOWAIT))) { *mp = m; m_freem(top); safestats.st_nomcl++; Index: head/sys/dev/sbni/if_sbni.c =================================================================== --- head/sys/dev/sbni/if_sbni.c +++ head/sys/dev/sbni/if_sbni.c @@ -878,8 +878,7 @@ */ if (ETHER_MAX_LEN + 2 > MHLEN) { /* Attach an mbuf cluster */ - MCLGET(m, M_NOWAIT); - if ((m->m_flags & M_EXT) == 0) { + if (!(MCLGET(m, M_NOWAIT))) { m_freem(m); return (0); } Index: head/sys/dev/smc/if_smc.c =================================================================== --- head/sys/dev/smc/if_smc.c +++ head/sys/dev/smc/if_smc.c @@ -693,8 +693,7 @@ if (m == NULL) { break; } - MCLGET(m, M_NOWAIT); - if ((m->m_flags & M_EXT) == 0) { + if (!(MCLGET(m, M_NOWAIT))) { m_freem(m); break; } Index: head/sys/dev/sn/if_sn.c =================================================================== --- head/sys/dev/sn/if_sn.c +++ head/sys/dev/sn/if_sn.c @@ -1065,14 +1065,9 @@ m->m_pkthdr.len = m->m_len = packet_length; /* - * Attach an mbuf cluster + * Attach an mbuf cluster. */ - MCLGET(m, M_NOWAIT); - - /* - * Insist on getting a cluster - */ - if ((m->m_flags & M_EXT) == 0) { + if (!(MCLGET(m, M_NOWAIT))) { m_freem(m); if_inc_counter(ifp, IFCOUNTER_IERRORS, 1); printf("sn: snread() kernel memory allocation problem\n"); Index: head/sys/dev/snc/dp83932.c =================================================================== --- head/sys/dev/snc/dp83932.c +++ head/sys/dev/snc/dp83932.c @@ -1129,8 +1129,7 @@ len = MLEN; } if (datalen >= MINCLSIZE) { - MCLGET(m, M_NOWAIT); - if ((m->m_flags & M_EXT) == 0) { + if (!(MCLGET(m, M_NOWAIT))) { if (top) m_freem(top); return (0); } Index: head/sys/dev/ti/if_ti.c =================================================================== --- head/sys/dev/ti/if_ti.c +++ head/sys/dev/ti/if_ti.c @@ -1596,8 +1596,7 @@ "failed -- packet dropped!\n"); goto nobufs; } - MCLGET(m[NPAYLOAD], M_NOWAIT); - if ((m[NPAYLOAD]->m_flags & M_EXT) == 0) { + if (!(MCLGET(m[NPAYLOAD], M_NOWAIT))) { device_printf(sc->ti_dev, "mbuf allocation failed " "-- packet dropped!\n"); goto nobufs; Index: head/sys/dev/tl/if_tl.c =================================================================== --- head/sys/dev/tl/if_tl.c +++ head/sys/dev/tl/if_tl.c @@ -1813,8 +1813,7 @@ return(1); } if (m_head->m_pkthdr.len > MHLEN) { - MCLGET(m_new, M_NOWAIT); - if (!(m_new->m_flags & M_EXT)) { + if (!(MCLGET(m_new, M_NOWAIT))) { m_freem(m_new); if_printf(ifp, "no memory for tx list\n"); return(1); Index: head/sys/dev/usb/misc/udbp.c =================================================================== --- head/sys/dev/usb/misc/udbp.c +++ head/sys/dev/usb/misc/udbp.c @@ -417,9 +417,8 @@ if (m == NULL) { goto tr_setup; } - MCLGET(m, M_NOWAIT); - if (!(m->m_flags & M_EXT)) { + if (!(MCLGET(m, M_NOWAIT))) { m_freem(m); goto tr_setup; } Index: head/sys/dev/vx/if_vx.c =================================================================== --- head/sys/dev/vx/if_vx.c +++ head/sys/dev/vx/if_vx.c @@ -865,8 +865,7 @@ len = MLEN; } if (totlen >= MINCLSIZE) { - MCLGET(m, M_NOWAIT); - if (m->m_flags & M_EXT) + if (MCLGET(m, M_NOWAIT)) len = MCLBYTES; } len = min(totlen, len); Index: head/sys/dev/wb/if_wb.c =================================================================== --- head/sys/dev/wb/if_wb.c +++ head/sys/dev/wb/if_wb.c @@ -1194,8 +1194,7 @@ if (m_new == NULL) return(1); if (m_head->m_pkthdr.len > MHLEN) { - MCLGET(m_new, M_NOWAIT); - if (!(m_new->m_flags & M_EXT)) { + if (!(MCLGET(m_new, M_NOWAIT))) { m_freem(m_new); return(1); } Index: head/sys/dev/xe/if_xe.c =================================================================== --- head/sys/dev/xe/if_xe.c +++ head/sys/dev/xe/if_xe.c @@ -765,8 +765,7 @@ } if (len + 3 > MHLEN) { - MCLGET(mbp, M_NOWAIT); - if ((mbp->m_flags & M_EXT) == 0) { + if (!(MCLGET(mbp, M_NOWAIT))) { m_freem(mbp); if_inc_counter(ifp, IFCOUNTER_IQDROPS, 1); continue; Index: head/sys/dev/xen/netfront/netfront.c =================================================================== --- head/sys/dev/xen/netfront/netfront.c +++ head/sys/dev/xen/netfront/netfront.c @@ -822,8 +822,7 @@ goto no_mbuf; } - m_cljget(m_new, M_NOWAIT, MJUMPAGESIZE); - if ((m_new->m_flags & M_EXT) == 0) { + if (m_cljget(m_new, M_NOWAIT, MJUMPAGESIZE) == NULL) { printf("%s: m_cljget failed\n", __func__); m_freem(m_new); Index: head/sys/mips/adm5120/if_admsw.c =================================================================== --- head/sys/mips/adm5120/if_admsw.c +++ head/sys/mips/adm5120/if_admsw.c @@ -655,8 +655,7 @@ break; } if (m0->m_pkthdr.len > MHLEN) { - MCLGET(m, M_NOWAIT); - if ((m->m_flags & M_EXT) == 0) { + if (!(MCLGET(m, M_NOWAIT))) { device_printf(sc->sc_dev, "unable to allocate Tx cluster\n"); m_freem(m); @@ -1227,8 +1226,7 @@ if (m == NULL) return (ENOBUFS); - MCLGET(m, M_NOWAIT); - if ((m->m_flags & M_EXT) == 0) { + if (!(MCLGET(m, M_NOWAIT))) { m_freem(m); return (ENOBUFS); } Index: head/sys/netgraph/atm/ngatmbase.c =================================================================== --- head/sys/netgraph/atm/ngatmbase.c +++ head/sys/netgraph/atm/ngatmbase.c @@ -151,8 +151,7 @@ } else { if ((n = uni_msg_len(msg)) > MHLEN) { - MCLGET(m0, M_NOWAIT); - if (!(m0->m_flags & M_EXT)) + if (!(MCLGET(m0, M_NOWAIT))) goto drop; if (n > MCLBYTES) n = MCLBYTES; @@ -173,8 +172,7 @@ last = m; if (n > MLEN) { - MCLGET(m, M_NOWAIT); - if (!(m->m_flags & M_EXT)) + if (!(MCLGET(m, M_NOWAIT))) goto drop; if (n > MCLBYTES) n = MCLBYTES; Index: head/sys/netgraph/atm/sscop/ng_sscop_cust.h =================================================================== --- head/sys/netgraph/atm/sscop/ng_sscop_cust.h +++ head/sys/netgraph/atm/sscop/ng_sscop_cust.h @@ -327,8 +327,7 @@ m->m_len = 0; \ m->m_pkthdr.len = 0; \ if (n > MHLEN) { \ - MCLGET(m, M_NOWAIT); \ - if (!(m->m_flags & M_EXT)){ \ + if (!(MCLGET(m, M_NOWAIT))){ \ m_free(m); \ m = NULL; \ } \ Index: head/sys/netgraph/bluetooth/drivers/bt3c/ng_bt3c_pccard.c =================================================================== --- head/sys/netgraph/bluetooth/drivers/bt3c/ng_bt3c_pccard.c +++ head/sys/netgraph/bluetooth/drivers/bt3c/ng_bt3c_pccard.c @@ -814,8 +814,7 @@ break; /* XXX lost of sync */ } - MCLGET(sc->m, M_NOWAIT); - if (!(sc->m->m_flags & M_EXT)) { + if (!(MCLGET(sc->m, M_NOWAIT))) { NG_FREE_M(sc->m); NG_BT3C_ERR(sc->dev, "Could not get cluster\n"); Index: head/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c =================================================================== --- head/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c +++ head/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c @@ -816,8 +816,7 @@ goto submit_next; } - MCLGET(m, M_NOWAIT); - if (!(m->m_flags & M_EXT)) { + if (!(MCLGET(m, M_NOWAIT))) { UBT_STAT_IERROR(sc); goto submit_next; } @@ -916,8 +915,7 @@ goto submit_next; } - MCLGET(m, M_NOWAIT); - if (!(m->m_flags & M_EXT)) { + if (!(MCLGET(m, M_NOWAIT))) { UBT_STAT_IERROR(sc); goto submit_next; } @@ -1126,8 +1124,7 @@ return (-1); /* XXX out of sync! */ } - MCLGET(m, M_NOWAIT); - if (!(m->m_flags & M_EXT)) { + if (!(MCLGET(m, M_NOWAIT))) { UBT_STAT_IERROR(sc); NG_FREE_M(m); return (-1); /* XXX out of sync! */ Index: head/sys/netgraph/ng_vjc.c =================================================================== --- head/sys/netgraph/ng_vjc.c +++ head/sys/netgraph/ng_vjc.c @@ -484,8 +484,7 @@ hm->m_len = 0; hm->m_pkthdr.rcvif = NULL; if (hlen > MHLEN) { /* unlikely, but can happen */ - MCLGET(hm, M_NOWAIT); - if ((hm->m_flags & M_EXT) == 0) { + if (!(MCLGET(hm, M_NOWAIT))) { m_freem(hm); priv->slc.sls_errorin++; NG_FREE_M(m); Index: head/sys/netipsec/key.c =================================================================== --- head/sys/netipsec/key.c +++ head/sys/netipsec/key.c @@ -2153,8 +2153,7 @@ MGETHDR(n, M_NOWAIT, MT_DATA); if (n && len > MHLEN) { - MCLGET(n, M_NOWAIT); - if ((n->m_flags & M_EXT) == 0) { + if (!(MCLGET(n, M_NOWAIT))) { m_freem(n); n = NULL; } @@ -3496,8 +3495,7 @@ return NULL; MGETHDR(m, M_NOWAIT, MT_DATA); if (m && len > MHLEN) { - MCLGET(m, M_NOWAIT); - if ((m->m_flags & M_EXT) == 0) { + if (!(MCLGET(m, M_NOWAIT))) { m_freem(m); m = NULL; } @@ -4694,8 +4692,7 @@ MGETHDR(n, M_NOWAIT, MT_DATA); if (len > MHLEN) { - MCLGET(n, M_NOWAIT); - if ((n->m_flags & M_EXT) == 0) { + if (!(MCLGET(n, M_NOWAIT))) { m_freem(n); n = NULL; } @@ -6628,8 +6625,7 @@ MGETHDR(n, M_NOWAIT, MT_DATA); if (len > MHLEN) { - MCLGET(n, M_NOWAIT); - if ((n->m_flags & M_EXT) == 0) { + if (!(MCLGET(n, M_NOWAIT))) { m_freem(n); n = NULL; } @@ -7187,8 +7183,7 @@ MGETHDR(n, M_NOWAIT, MT_DATA); if (n && m->m_pkthdr.len > MHLEN) { - MCLGET(n, M_NOWAIT); - if ((n->m_flags & M_EXT) == 0) { + if (!(MCLGET(n, M_NOWAIT))) { m_free(n); n = NULL; } Index: head/sys/netipsec/keysock.c =================================================================== --- head/sys/netipsec/keysock.c +++ head/sys/netipsec/keysock.c @@ -223,8 +223,7 @@ n->m_len = MLEN; } if (tlen >= MCLBYTES) { /*XXX better threshold? */ - MCLGET(n, M_NOWAIT); - if ((n->m_flags & M_EXT) == 0) { + if (!(MCLGET(n, M_NOWAIT))) { m_free(n); m_freem(m); PFKEYSTAT_INC(in_nomem); Index: head/sys/sys/mbuf.h =================================================================== --- head/sys/sys/mbuf.h +++ head/sys/sys/mbuf.h @@ -667,7 +667,7 @@ return (uma_zalloc_arg(zone_pack, &args, how)); } -static __inline void +static __inline int m_clget(struct mbuf *m, int how) { @@ -683,6 +683,7 @@ zone_drain(zone_pack); uma_zalloc_arg(zone_clust, m, how); } + return (m->m_flags & M_EXT); } /*