Date: Wed, 18 Sep 2002 14:30:44 -0400 (EDT) From: "Andrew R. Reiter" <arr@watson.org> To: Poul-Henning Kamp <phk@FreeBSD.ORG> Cc: arch@FreeBSD.ORG Subject: Re: Trivial mbuf patch for review. Message-ID: <Pine.NEB.3.96L.1020918142918.51396A-100000@fledge.watson.org> In-Reply-To: <3185.1032361630@critter.freebsd.dk>
next in thread | previous in thread | raw e-mail | index | archive | help
The only comment I have is the same one I mentioned on irc (I guess it was more in the form of a question) -- but for the record... Should m_length() return unsigned? Also, if not, should we fix below in bpf.c where pktlen is unsigned? Cheers, Andrew On Wed, 18 Sep 2002, Poul-Henning Kamp wrote: : :This patch is a no-op which replaces local mbuf-chain counting :loops with calls to m_length() and in one case m_fixhdr(). : :Index: kern/uipc_socket2.c :=================================================================== :RCS file: /home/ncvs/src/sys/kern/uipc_socket2.c,v :retrieving revision 1.103 :diff -u -r1.103 uipc_socket2.c :--- kern/uipc_socket2.c 16 Aug 2002 18:41:48 -0000 1.103 :+++ kern/uipc_socket2.c 18 Sep 2002 14:08:34 -0000 :@@ -498,11 +498,11 @@ : #ifdef SOCKBUF_DEBUG : void : sbcheck(sb) :- register struct sockbuf *sb; :+ struct sockbuf *sb; : { :- register struct mbuf *m; :- register struct mbuf *n = 0; :- register u_long len = 0, mbcnt = 0; :+ struct mbuf *m; :+ struct mbuf *n = 0; :+ u_long len = 0, mbcnt = 0; : : for (m = sb->sb_mb; m; m = n) { : n = m->m_nextpkt; :@@ -610,22 +610,18 @@ : */ : int : sbappendaddr(sb, asa, m0, control) :- register struct sockbuf *sb; :+ struct sockbuf *sb; : struct sockaddr *asa; : struct mbuf *m0, *control; : { :- register struct mbuf *m, *n; :+ struct mbuf *m, *n; : int space = asa->sa_len; : : if (m0 && (m0->m_flags & M_PKTHDR) == 0) : panic("sbappendaddr"); : if (m0) : space += m0->m_pkthdr.len; :- for (n = control; n; n = n->m_next) { :- space += n->m_len; :- if (n->m_next == 0) /* keep pointer to last control buf */ :- break; :- } :+ space += m_length(control, &n); : if (space > sbspace(sb)) : return (0); : if (asa->sa_len > MLEN) :@@ -657,19 +653,12 @@ : struct sockbuf *sb; : struct mbuf *control, *m0; : { :- register struct mbuf *m, *n; :- int space = 0; :+ struct mbuf *m, *n; :+ int space; : : if (control == 0) : panic("sbappendcontrol"); :- for (m = control; ; m = m->m_next) { :- space += m->m_len; :- if (m->m_next == 0) :- break; :- } :- n = m; /* save pointer to last control buffer */ :- for (m = m0; m; m = m->m_next) :- space += m->m_len; :+ space = m_length(control, &n) + m_length(m0, NULL); : if (space > sbspace(sb)) : return (0); : n->m_next = m0; /* concatenate data to control */ :Index: net/bpf.c :=================================================================== :RCS file: /home/ncvs/src/sys/net/bpf.c,v :retrieving revision 1.94 :diff -u -r1.94 bpf.c :--- net/bpf.c 31 Jul 2002 16:11:32 -0000 1.94 :+++ net/bpf.c 18 Sep 2002 14:18:31 -0000 :@@ -1123,11 +1123,8 @@ : struct bpf_if *bp = ifp->if_bpf; : struct bpf_d *d; : u_int pktlen, slen; :- struct mbuf *m0; : :- pktlen = 0; :- for (m0 = m; m0 != 0; m0 = m0->m_next) :- pktlen += m0->m_len; :+ pktlen = m_length(m, NULL); : : BPFIF_LOCK(bp); : for (d = bp->bif_dlist; d != 0; d = d->bd_next) { :Index: net/if_ppp.c :=================================================================== :RCS file: /home/ncvs/src/sys/net/if_ppp.c,v :retrieving revision 1.83 :diff -u -r1.83 if_ppp.c :--- net/if_ppp.c 19 Aug 2002 19:22:41 -0000 1.83 :+++ net/if_ppp.c 18 Sep 2002 14:19:07 -0000 :@@ -758,7 +758,6 @@ : struct ifqueue *ifq; : enum NPmode mode; : int len; :- struct mbuf *m; : : #ifdef MAC : error = mac_check_ifnet_transmit(ifp, m0); :@@ -851,9 +850,7 @@ : *cp++ = protocol & 0xff; : m0->m_len += PPP_HDRLEN; : :- len = 0; :- for (m = m0; m != 0; m = m->m_next) :- len += m->m_len; :+ len = m_length(m0, NULL); : : if (sc->sc_flags & SC_LOG_OUTPKT) { : printf("ppp%d output: ", ifp->if_unit); :@@ -1087,9 +1084,7 @@ : struct mbuf *mcomp = NULL; : int slen, clen; : :- slen = 0; :- for (mp = m; mp != NULL; mp = mp->m_next) :- slen += mp->m_len; :+ slen = m_length(m, NULL); : clen = (*sc->sc_xcomp->compress) : (sc->sc_xc_state, &mcomp, m, slen, sc->sc_if.if_mtu + PPP_HDRLEN); : if (mcomp != NULL) { :@@ -1324,9 +1319,7 @@ : sc->sc_stats.ppp_ipackets++; : : if (sc->sc_flags & SC_LOG_INPKT) { :- ilen = 0; :- for (mp = m; mp != NULL; mp = mp->m_next) :- ilen += mp->m_len; :+ ilen = m_length(m, NULL); : printf("ppp%d: got %d bytes\n", ifp->if_unit, ilen); : pppdumpm(m); : } :@@ -1389,9 +1382,7 @@ : } : #endif : :- ilen = 0; :- for (mp = m; mp != NULL; mp = mp->m_next) :- ilen += mp->m_len; :+ ilen = m_length(m, NULL); : : #ifdef VJC : if (sc->sc_flags & SC_VJ_RESET) { :Index: netinet/ip_input.c :=================================================================== :RCS file: /home/ncvs/src/sys/netinet/ip_input.c,v :retrieving revision 1.208 :diff -u -r1.208 ip_input.c :--- netinet/ip_input.c 17 Sep 2002 11:20:02 -0000 1.208 :+++ netinet/ip_input.c 18 Sep 2002 13:47:10 -0000 :@@ -1071,12 +1071,8 @@ : m->m_len += (IP_VHL_HL(ip->ip_vhl) << 2); : m->m_data -= (IP_VHL_HL(ip->ip_vhl) << 2); : /* some debugging cruft by sklower, below, will go away soon */ :- if (m->m_flags & M_PKTHDR) { /* XXX this should be done elsewhere */ :- register int plen = 0; :- for (t = m; t; t = t->m_next) :- plen += t->m_len; :- m->m_pkthdr.len = plen; :- } :+ if (m->m_flags & M_PKTHDR) /* XXX this should be done elsewhere */ :+ m_fixhdr(m); : return (m); : : dropfrag: :Index: netns/idp_usrreq.c :=================================================================== :RCS file: /home/ncvs/src/sys/netns/idp_usrreq.c,v :retrieving revision 1.12 :diff -u -r1.12 idp_usrreq.c :--- netns/idp_usrreq.c 31 May 2002 11:52:34 -0000 1.12 :+++ netns/idp_usrreq.c 18 Sep 2002 14:14:06 -0000 :@@ -144,18 +144,12 @@ : register struct mbuf *m; : register struct idp *idp; : register struct socket *so; :- register int len = 0; :+ register int len; : register struct route *ro; : struct mbuf *mprev; : extern int idpcksum; : :- /* :- * Calculate data length. :- */ :- for (m = m0; m; m = m->m_next) { :- mprev = m; :- len += m->m_len; :- } :+ len = m_length(m0, &mprev); : /* : * Make sure packet is actually of even length. : */ :Index: netns/spp_usrreq.c :=================================================================== :RCS file: /home/ncvs/src/sys/netns/spp_usrreq.c,v :retrieving revision 1.16 :diff -u -r1.16 spp_usrreq.c :--- netns/spp_usrreq.c 25 Aug 2002 13:17:35 -0000 1.16 :+++ netns/spp_usrreq.c 18 Sep 2002 14:13:27 -0000 :@@ -687,8 +687,7 @@ : firstbad = m; : /*for (;;) {*/ : /* calculate length */ :- for (m0 = m, len = 0; m ; m = m->m_next) :- len += m->m_len; :+ len = m_length(m); : if (len > cb->s_mtu) { : } : /* FINISH THIS :Index: netsmb/smb_rq.c :=================================================================== :RCS file: /home/ncvs/src/sys/netsmb/smb_rq.c,v :retrieving revision 1.7 :diff -u -r1.7 smb_rq.c :--- netsmb/smb_rq.c 16 Sep 2002 09:51:58 -0000 1.7 :+++ netsmb/smb_rq.c 18 Sep 2002 14:12:50 -0000 :@@ -421,9 +421,7 @@ : m0 = m_split(mtop, offset, M_TRYWAIT); : if (m0 == NULL) : return EBADRPC; :- for(len = 0, m = m0; m->m_next; m = m->m_next) :- len += m->m_len; :- len += m->m_len; :+ len = m_length(m0, &m); : m->m_len -= len - count; : if (mdp->md_top == NULL) { : md_initm(mdp, m0); :Index: nfsclient/nfs_socket.c :=================================================================== :RCS file: /home/ncvs/src/sys/nfsclient/nfs_socket.c,v :retrieving revision 1.86 :diff -u -r1.86 nfs_socket.c :--- nfsclient/nfs_socket.c 8 Sep 2002 15:11:18 -0000 1.86 :+++ nfsclient/nfs_socket.c 18 Sep 2002 14:19:42 -0000 :@@ -869,13 +869,7 @@ : rep->r_vp = vp; : rep->r_td = td; : rep->r_procnum = procnum; :- i = 0; :- m = mrest; :- while (m) { :- i += m->m_len; :- m = m->m_next; :- } :- mrest_len = i; :+ mrest_len = i = m_length(mrest, NULL); : : /* : * Get the RPC header with authorization. :Index: nfsserver/nfs_syscalls.c :=================================================================== :RCS file: /home/ncvs/src/sys/nfsserver/nfs_syscalls.c,v :retrieving revision 1.80 :diff -u -r1.80 nfs_syscalls.c :--- nfsserver/nfs_syscalls.c 24 Jul 2002 23:10:34 -0000 1.80 :+++ nfsserver/nfs_syscalls.c 18 Sep 2002 14:11:36 -0000 :@@ -451,12 +451,7 @@ : nfsrv_updatecache(nd, TRUE, mreq); : nd->nd_mrep = NULL; : case RC_REPLY: :- m = mreq; :- siz = 0; :- while (m) { :- siz += m->m_len; :- m = m->m_next; :- } :+ siz = m_length(mreq, NULL); : if (siz <= 0 || siz > NFS_MAXPACKET) { : printf("mbuf siz=%d\n",siz); : panic("Bad nfs svc reply"); :-- :Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 :phk@FreeBSD.ORG | TCP/IP since RFC 956 :FreeBSD committer | BSD since 4.3-tahoe :Never attribute to malice what can adequately be explained by incompetence. : :To Unsubscribe: send mail to majordomo@FreeBSD.org :with "unsubscribe freebsd-arch" in the body of the message : -- Andrew R. Reiter arr@watson.org arr@FreeBSD.org To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.NEB.3.96L.1020918142918.51396A-100000>