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;