Module Name:    src
Committed By:   oki
Date:           Thu Oct 14 03:07:52 UTC 2010

Modified Files:
        src/sys/kern: uipc_socket.c

Log Message:
Wait for freeing mbuf cluster in sosend() causes freeze network stack.
Don't wait for it.
problem was found by iij seil team.
it is similar to OpenBSD uipc_socket.c rev.1.72.


To generate a diff of this commit:
cvs rdiff -u -r1.200 -r1.201 src/sys/kern/uipc_socket.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/uipc_socket.c
diff -u src/sys/kern/uipc_socket.c:1.200 src/sys/kern/uipc_socket.c:1.201
--- src/sys/kern/uipc_socket.c:1.200	Wed Dec 30 22:12:12 2009
+++ src/sys/kern/uipc_socket.c	Thu Oct 14 03:07:51 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: uipc_socket.c,v 1.200 2009/12/30 22:12:12 elad Exp $	*/
+/*	$NetBSD: uipc_socket.c,v 1.201 2010/10/14 03:07:51 oki Exp $	*/
 
 /*-
  * Copyright (c) 2002, 2007, 2008, 2009 The NetBSD Foundation, Inc.
@@ -63,7 +63,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uipc_socket.c,v 1.200 2009/12/30 22:12:12 elad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_socket.c,v 1.201 2010/10/14 03:07:51 oki Exp $");
 
 #include "opt_compat_netbsd.h"
 #include "opt_sock_counters.h"
@@ -1022,7 +1022,7 @@
 				}
 				if (resid >= MINCLSIZE && space >= MCLBYTES) {
 					SOSEND_COUNTER_INCR(&sosend_copy_big);
-					m_clget(m, M_WAIT);
+					m_clget(m, M_DONTWAIT);
 					if ((m->m_flags & M_EXT) == 0)
 						goto nopages;
 					mlen = MCLBYTES;

Reply via email to