aboutsummaryrefslogtreecommitdiff
path: root/sys/netinet/tcp_syncache.c
diff options
context:
space:
mode:
authorGleb Smirnoff <glebius@FreeBSD.org>2020-01-22 05:51:22 +0000
committerGleb Smirnoff <glebius@FreeBSD.org>2020-01-22 05:51:22 +0000
commitb95554538682cc140f45a01732598e6c4f92106b (patch)
tree625a9db83095b0e16534c5d62d54038cf66eb227 /sys/netinet/tcp_syncache.c
parenta7f12fce22ec06b2f49965cf7ba66183849ae664 (diff)
downloadsrc-b95554538682cc140f45a01732598e6c4f92106b.tar.gz
src-b95554538682cc140f45a01732598e6c4f92106b.zip
Make ip6_output() and ip_output() require network epoch.
All callers that before may called into these functions without network epoch now must enter it.
Notes
Notes: svn path=/head/; revision=356974
Diffstat (limited to 'sys/netinet/tcp_syncache.c')
-rw-r--r--sys/netinet/tcp_syncache.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/netinet/tcp_syncache.c b/sys/netinet/tcp_syncache.c
index 967f673090df..98c90c561d13 100644
--- a/sys/netinet/tcp_syncache.c
+++ b/sys/netinet/tcp_syncache.c
@@ -467,6 +467,7 @@ syncache_timer(void *xsch)
{
struct syncache_head *sch = (struct syncache_head *)xsch;
struct syncache *sc, *nsc;
+ struct epoch_tracker et;
int tick = ticks;
char *s;
bool paused;
@@ -526,7 +527,9 @@ syncache_timer(void *xsch)
free(s, M_TCPLOG);
}
+ NET_EPOCH_ENTER(et);
syncache_respond(sc, NULL, TH_SYN|TH_ACK);
+ NET_EPOCH_EXIT(et);
TCPSTAT_INC(tcps_sc_retransmitted);
syncache_timeout(sc, sch, 0);
}