Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 15 Dec 2002 10:37:21 -0500
From:      Hiten Pandya <hiten@angelica.unixdaemons.com>
To:        Robert Watson <rwatson@FreeBSD.ORG>
Cc:        Maxim Konovalov <maxim@FreeBSD.ORG>, cvs-committers@FreeBSD.ORG, cvs-all@FreeBSD.ORG
Subject:   Re: cvs commit: src/sys/netinet ip_dummynet.c
Message-ID:  <20021215153721.GA26021@angelica.unixdaemons.com>
In-Reply-To: <Pine.NEB.3.96L.1021215100328.86543C-100000@fledge.watson.org>
References:  <200212151021.gBFALV1Y040756@repoman.freebsd.org> <Pine.NEB.3.96L.1021215100328.86543C-100000@fledge.watson.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Dec 15, 2002 at 10:04:42AM -0500, Robert Watson wrote the words in effect of:
> I've noticed this in some other places in the code, and was confused about
> it myself for a bit.  Part of the problem is that the flags appear to come
> from the same namespace.  It should be easy enough to catch this though by
> temporarily diverging the values of the flags and making sure there are
> asserts in the appropriate calls that consume the flags.  Alternatively,
> would could combine the flags... :-)
> 
> Robert N M Watson             FreeBSD Core Team, TrustedBSD Projects
> robert@fledge.watson.org      Network Associates Laboratories
> 
> On Sun, 15 Dec 2002, Maxim Konovalov wrote:
> 
> > maxim       2002/12/15 02:21:31 PST
> > 
> >   Modified files:
> >     sys/netinet          ip_dummynet.c 
> >   Log:
> >   o M_DONTWAIT is mbuf(9) flag: malloc(M_DONTWAIT) -> malloc(M_NOWAIT).
> >   The bug does not affect anything because M_NOWAIT == M_DONTWAIT.
> >   
> >   Reviewed by:    luigi
> >   MFC after:      1 week
> >   
> >   Revision  Changes    Path
> >   1.57      +7 -7      src/sys/netinet/ip_dummynet.c
> > 

Untested, but hopefully harmless patches: (more to come later on)
Also, it is not only M_DONTWAIT which is affected, people are using
M_WAITOK, where M_TRYWAIT should be used.  A patch for the mbuf(9)
manual page will follow.

NOTE: patch for ip_fw.c has been purposely nuked from here, because
it is a no-op in -current, according to Maxim K.

Index: net/bridge.c
===================================================================
RCS file: /home/hiten/ncvs/src/sys/net/bridge.c,v
retrieving revision 1.59
diff -u -r1.59 bridge.c
--- net/bridge.c	14 Nov 2002 23:57:09 -0000	1.59
+++ net/bridge.c	15 Dec 2002 04:40:40 -0000
@@ -239,7 +239,7 @@
 	    goto found;
 
     /* Not found, need to reallocate */
-    c = malloc((1+n_clusters) * sizeof (*c), M_IFADDR, M_DONTWAIT | M_ZERO);
+    c = malloc((1+n_clusters) * sizeof (*c), M_IFADDR, M_NOWAIT | M_ZERO);
     if (c == NULL) {/* malloc failure */
 	printf("-- bridge: cannot add new cluster\n");
 	return NULL;
Index: net/radix.h
===================================================================
RCS file: /home/hiten/ncvs/src/sys/net/radix.h,v
retrieving revision 1.18
diff -u -r1.18 radix.h
--- net/radix.h	19 Mar 2002 21:54:18 -0000	1.18
+++ net/radix.h	15 Dec 2002 04:43:56 -0000
@@ -150,7 +150,7 @@
 #define Bcmp(a, b, n) bcmp(((caddr_t)(a)), ((caddr_t)(b)), (unsigned)(n))
 #define Bcopy(a, b, n) bcopy(((caddr_t)(a)), ((caddr_t)(b)), (unsigned)(n))
 #define Bzero(p, n) bzero((caddr_t)(p), (unsigned)(n));
-#define R_Malloc(p, t, n) (p = (t) malloc((unsigned long)(n), M_RTABLE, M_DONTWAIT))
+#define R_Malloc(p, t, n) (p = (t) malloc((unsigned long)(n), M_RTABLE, M_NOWAIT))
 #define Free(p) free((caddr_t)p, M_RTABLE);
 #endif /* _KERNEL */
 
Index: net/raw_cb.c
===================================================================
RCS file: /home/hiten/ncvs/src/sys/net/raw_cb.c,v
retrieving revision 1.22
diff -u -r1.22 raw_cb.c
--- net/raw_cb.c	20 Nov 2002 19:00:53 -0000	1.22
+++ net/raw_cb.c	15 Dec 2002 05:05:52 -0000
@@ -139,7 +139,7 @@
 	if (ifnet == 0)
 		return (EADDRNOTAVAIL);
 	rp = sotorawcb(so);
-	nam = m_copym(nam, 0, M_COPYALL, M_WAITOK);
+	nam = m_copym(nam, 0, M_COPYALL, M_TRYWAIT);
 	rp->rcb_laddr = mtod(nam, struct sockaddr *);
 	return (0);
 }
Index: netgraph/ng_bridge.c
===================================================================
RCS file: /home/hiten/ncvs/src/sys/netgraph/ng_bridge.c,v
retrieving revision 1.15
diff -u -r1.15 ng_bridge.c
--- netgraph/ng_bridge.c	8 Nov 2002 21:13:18 -0000	1.15
+++ netgraph/ng_bridge.c	15 Dec 2002 05:18:01 -0000
@@ -713,7 +713,7 @@
 			 * It's usable link but not the reserved (first) one.
 			 * Copy mbuf and meta info for sending.
 			 */
-			m2 = m_dup(m, M_NOWAIT);	/* XXX m_copypacket() */
+			m2 = m_dup(m, M_DONTWAIT);	/* XXX m_copypacket() */
 			if (m2 == NULL) {
 				link->stats.memoryFailures++;
 				NG_FREE_ITEM(item);
Index: netgraph/ng_one2many.c
===================================================================
RCS file: /home/hiten/ncvs/src/sys/netgraph/ng_one2many.c,v
retrieving revision 1.10
diff -u -r1.10 ng_one2many.c
--- netgraph/ng_one2many.c	8 Nov 2002 21:13:18 -0000	1.10
+++ netgraph/ng_one2many.c	15 Dec 2002 05:18:55 -0000
@@ -427,7 +427,7 @@
 				struct ng_one2many_link *mdst;
 
 				mdst = &priv->many[priv->activeMany[i]];
-				m2 = m_dup(m, M_NOWAIT);        /* XXX m_copypacket() */
+				m2 = m_dup(m, M_DONTWAIT);        /* XXX m_copypacket() */
 				if (m2 == NULL) {
 					mdst->stats.memoryFailures++;
 					NG_FREE_ITEM(item);
Index: netgraph/ng_ppp.c
===================================================================
RCS file: /home/hiten/ncvs/src/sys/netgraph/ng_ppp.c,v
retrieving revision 1.41
diff -u -r1.41 ng_ppp.c
--- netgraph/ng_ppp.c	8 Nov 2002 21:13:18 -0000	1.41
+++ netgraph/ng_ppp.c	15 Dec 2002 05:19:22 -0000
@@ -1595,7 +1595,7 @@
 			/* Split off next fragment as "m2" */
 			m2 = m;
 			if (!lastFragment) {
-				struct mbuf *n = m_split(m, len, M_NOWAIT);
+				struct mbuf *n = m_split(m, len, M_DONTWAIT);
 
 				if (n == NULL) {
 					NG_FREE_M(m);
Index: netgraph/ng_source.c
===================================================================
RCS file: /home/hiten/ncvs/src/sys/netgraph/ng_source.c,v
retrieving revision 1.4
diff -u -r1.4 ng_source.c
--- netgraph/ng_source.c	5 Nov 2002 01:08:11 -0000	1.4
+++ netgraph/ng_source.c	15 Dec 2002 05:19:39 -0000
@@ -638,7 +638,7 @@
 			break;
 
 		/* duplicate the packet */
-		m2 = m_copypacket(m, M_NOWAIT);
+		m2 = m_copypacket(m, M_DONTWAIT);
 		if (m2 == NULL) {
 			s = splnet();
 			IF_PREPEND(&sc->snd_queue, m);
Index: netgraph/ng_tee.c
===================================================================
RCS file: /home/hiten/ncvs/src/sys/netgraph/ng_tee.c,v
retrieving revision 1.20
diff -u -r1.20 ng_tee.c
--- netgraph/ng_tee.c	31 May 2002 23:48:03 -0000	1.20
+++ netgraph/ng_tee.c	15 Dec 2002 05:20:05 -0000
@@ -334,7 +334,7 @@
 		meta_p meta2;
 
 		/* Copy packet (failure will not stop the original)*/
-		m2 = m_dup(m, M_NOWAIT);
+		m2 = m_dup(m, M_DONTWAIT);
 		if (m2) {
 
 			/* Copy meta info */
Index: netgraph/bluetooth/socket/ng_btsocket_hci_raw.c
===================================================================
RCS file: /home/hiten/ncvs/src/sys/netgraph/bluetooth/socket/ng_btsocket_hci_raw.c,v
retrieving revision 1.1
diff -u -r1.1 ng_btsocket_hci_raw.c
--- netgraph/bluetooth/socket/ng_btsocket_hci_raw.c	20 Nov 2002 23:01:57 -0000	1.1
+++ netgraph/bluetooth/socket/ng_btsocket_hci_raw.c	15 Dec 2002 05:39:04 -0000
@@ -1271,7 +1271,7 @@
 		sa = (struct sockaddr *) &pcb->addr;
 	}
 
-	MGET(nam, M_WAITOK, MT_SONAME);
+	MGET(nam, M_TRYWAIT, MT_SONAME);
 	if (nam == NULL) {
 		error = ENOBUFS;
 		goto drop;
Index: netgraph/bluetooth/socket/ng_btsocket_l2cap.c
===================================================================
RCS file: /home/hiten/ncvs/src/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap.c,v
retrieving revision 1.1
diff -u -r1.1 ng_btsocket_l2cap.c
--- netgraph/bluetooth/socket/ng_btsocket_l2cap.c	20 Nov 2002 23:01:57 -0000	1.1
+++ netgraph/bluetooth/socket/ng_btsocket_l2cap.c	15 Dec 2002 05:17:27 -0000
@@ -1464,7 +1464,7 @@
 			 * it is a broadcast traffic after all
 			 */
 
-			copy = m_dup(m, M_NOWAIT);
+			copy = m_dup(m, M_DONTWAIT);
 			if (copy != NULL) {
 				sbappendrecord(&pcb->so->so_rcv, copy);
 				sorwakeup(pcb->so);
@@ -2384,7 +2384,7 @@
 	if (pcb->so->so_snd.sb_cc == 0)
 		return (EINVAL); /* XXX */
 
-	m = m_dup(pcb->so->so_snd.sb_mb, M_NOWAIT);
+	m = m_dup(pcb->so->so_snd.sb_mb, M_DONTWAIT);
 	if (m == NULL)
 		return (ENOBUFS);
 
Index: netinet/ip_encap.c
===================================================================
RCS file: /home/hiten/ncvs/src/sys/netinet/ip_encap.c,v
retrieving revision 1.13
diff -u -r1.13 ip_encap.c
--- netinet/ip_encap.c	16 Oct 2002 01:54:44 -0000	1.13
+++ netinet/ip_encap.c	15 Dec 2002 05:20:42 -0000
@@ -487,7 +487,7 @@
 {
 	struct m_tag *tag;
 
-	tag = m_tag_get(PACKET_TAG_ENCAP, sizeof (void*), M_NOWAIT);
+	tag = m_tag_get(PACKET_TAG_ENCAP, sizeof (void*), M_DONTWAIT);
 	if (tag) {
 		*(void**)(tag+1) = ep->arg;
 		m_tag_prepend(m, tag);
Index: netinet6/esp_core.c
===================================================================
RCS file: /home/hiten/ncvs/src/sys/netinet6/esp_core.c,v
retrieving revision 1.10
diff -u -r1.10 esp_core.c
--- netinet6/esp_core.c	5 Mar 2002 21:12:41 -0000	1.10
+++ netinet6/esp_core.c	15 Dec 2002 04:47:32 -0000
@@ -219,7 +219,7 @@
 	sav->schedlen = (*algo->schedlen)(algo);
 	if (sav->schedlen < 0)
 		return EINVAL;
-	sav->sched = malloc(sav->schedlen, M_SECA, M_DONTWAIT);
+	sav->sched = malloc(sav->schedlen, M_SECA, M_NOWAIT);
 	if (!sav->sched) {
 		sav->schedlen = 0;
 		return ENOBUFS;
Index: netinet6/ip6_fw.c
===================================================================
RCS file: /home/hiten/ncvs/src/sys/netinet6/ip6_fw.c,v
retrieving revision 1.19
diff -u -r1.19 ip6_fw.c
--- netinet6/ip6_fw.c	25 Aug 2002 03:50:29 -0000	1.19
+++ netinet6/ip6_fw.c	15 Dec 2002 04:48:02 -0000
@@ -845,8 +845,8 @@
 	u_short nbr = 0;
 	int s;
 
-	fwc = malloc(sizeof *fwc, M_IP6FW, M_DONTWAIT);
-	ftmp = malloc(sizeof *ftmp, M_IP6FW, M_DONTWAIT);
+	fwc = malloc(sizeof *fwc, M_IP6FW, M_NOWAIT);
+	ftmp = malloc(sizeof *ftmp, M_IP6FW, M_NOWAIT);
 	if (!fwc || !ftmp) {
 		dprintf(("%s malloc said no\n", err_prefix));
 		if (fwc)  free(fwc, M_IP6FW);
Index: netinet6/ipcomp_output.c
===================================================================
RCS file: /home/hiten/ncvs/src/sys/netinet6/ipcomp_output.c,v
retrieving revision 1.3
diff -u -r1.3 ipcomp_output.c
--- netinet6/ipcomp_output.c	19 Apr 2002 04:46:23 -0000	1.3
+++ netinet6/ipcomp_output.c	15 Dec 2002 05:21:14 -0000
@@ -171,12 +171,12 @@
 	 * compromise two m_copym().  we will be going through every byte of
 	 * the payload during compression process anyways.
 	 */
-	mcopy = m_copym(m, 0, M_COPYALL, M_NOWAIT);
+	mcopy = m_copym(m, 0, M_COPYALL, M_DONTWAIT);
 	if (mcopy == NULL) {
 		error = ENOBUFS;
 		return 0;
 	}
-	md0 = m_copym(md, 0, M_COPYALL, M_NOWAIT);
+	md0 = m_copym(md, 0, M_COPYALL, M_DONTWAIT);
 	if (md0 == NULL) {
 		m_freem(mcopy);
 		error = ENOBUFS;
Index: netipsec/xform_ah.c
===================================================================
RCS file: /home/hiten/ncvs/src/sys/netipsec/xform_ah.c,v
retrieving revision 1.1
diff -u -r1.1 xform_ah.c
--- netipsec/xform_ah.c	16 Oct 2002 02:10:07 -0000	1.1
+++ netipsec/xform_ah.c	15 Dec 2002 05:22:31 -0000
@@ -431,7 +431,7 @@
 			if (m->m_len <= skip) {
 				ptr = (unsigned char *) malloc(
 				    skip - sizeof(struct ip6_hdr),
-				    M_XDATA, M_NOWAIT);
+				    M_XDATA, M_DONTWAIT);
 				if (ptr == NULL) {
 					DPRINTF(("ah_massage_headers: failed "
 					    "to allocate memory for IPv6 "
Index: netsmb/smb_trantcp.c
===================================================================
RCS file: /home/hiten/ncvs/src/sys/netsmb/smb_trantcp.c,v
retrieving revision 1.14
diff -u -r1.14 smb_trantcp.c
--- netsmb/smb_trantcp.c	26 Nov 2002 23:53:28 -0000	1.14
+++ netsmb/smb_trantcp.c	15 Dec 2002 05:38:26 -0000
@@ -648,7 +648,7 @@
 		error = ENOTCONN;
 		goto abort;
 	}
-	M_PREPEND(m0, 4, M_WAITOK);
+	M_PREPEND(m0, 4, M_TRYWAIT);
 	if (m0 == NULL)
 		return ENOBUFS;
 	nb_sethdr(m0, NB_SSN_MESSAGE, m_fixhdr(m0) - 4);

Cheers.

-- 
Hiten Pandya (hiten@unixdaemons.com, hiten@uk.FreeBSD.org)
http://www.unixdaemons.com/~hiten/

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021215153721.GA26021>