Module Name: src
Committed By: yamt
Date: Mon Oct 31 12:56:46 UTC 2011
Modified Files:
src/sys/netinet: tcp_subr.c
Log Message:
tcp_drain: grab softnet_lock where appropriate
To generate a diff of this commit:
cvs rdiff -u -r1.241 -r1.242 src/sys/netinet/tcp_subr.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/netinet/tcp_subr.c
diff -u src/sys/netinet/tcp_subr.c:1.241 src/sys/netinet/tcp_subr.c:1.242
--- src/sys/netinet/tcp_subr.c:1.241 Tue May 3 18:28:45 2011
+++ src/sys/netinet/tcp_subr.c Mon Oct 31 12:56:45 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: tcp_subr.c,v 1.241 2011/05/03 18:28:45 dyoung Exp $ */
+/* $NetBSD: tcp_subr.c,v 1.242 2011/10/31 12:56:45 yamt Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -91,7 +91,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tcp_subr.c,v 1.241 2011/05/03 18:28:45 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tcp_subr.c,v 1.242 2011/10/31 12:56:45 yamt Exp $");
#include "opt_inet.h"
#include "opt_ipsec.h"
@@ -1328,8 +1328,7 @@ tcp_drainstub(void)
/*
* Protocol drain routine. Called when memory is in short supply.
- * Don't acquire softnet_lock as can be called from hardware
- * interrupt handler.
+ * Called from pr_fasttimo thus a callout context.
*/
void
tcp_drain(void)
@@ -1337,6 +1336,7 @@ tcp_drain(void)
struct inpcb_hdr *inph;
struct tcpcb *tp;
+ mutex_enter(softnet_lock);
KERNEL_LOCK(1, NULL);
/*
@@ -1371,6 +1371,7 @@ tcp_drain(void)
}
KERNEL_UNLOCK_ONE(NULL);
+ mutex_exit(softnet_lock);
}
/*