aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Gallatin <gallatin@FreeBSD.org>2021-05-25 17:45:37 +0000
committerMichael Tuexen <tuexen@FreeBSD.org>2021-07-13 19:54:43 +0000
commit1843b06deeb22ae5990d5a0308bebaad1bd27e98 (patch)
tree0dbccd7bfca7a21e479585c02d13534df06071ad
parent648c68168c24592967df9d9c6a4d79e1792e4562 (diff)
downloadsrc-1843b06deeb22ae5990d5a0308bebaad1bd27e98.tar.gz
src-1843b06deeb22ae5990d5a0308bebaad1bd27e98.zip
tcp: enter network epoch when calling tfb_tcp_fb_fini
We need to enter the network epoch when calling into tfb_tcp_fb_fini. I noticed this when I hit an assert running the latest rack Differential Revision: https://reviews.freebsd.org/D30407 Reviewed by: rrs, tuexen Sponsored by: Netflix (cherry picked from commit 086a35562f47917a516d30acc8b78a4884e31a4f)
-rw-r--r--sys/netinet/tcp_usrreq.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/netinet/tcp_usrreq.c b/sys/netinet/tcp_usrreq.c
index bd847426681e..cf62eeeb18d5 100644
--- a/sys/netinet/tcp_usrreq.c
+++ b/sys/netinet/tcp_usrreq.c
@@ -1825,11 +1825,14 @@ tcp_ctloutput(struct socket *so, struct sockopt *sopt)
* new one already.
*/
if (tp->t_fb->tfb_tcp_fb_fini) {
+ struct epoch_tracker et;
/*
* Tell the stack to cleanup with 0 i.e.
* the tcb is not going away.
*/
+ NET_EPOCH_ENTER(et);
(*tp->t_fb->tfb_tcp_fb_fini)(tp, 0);
+ NET_EPOCH_EXIT(et);
}
#ifdef TCPHPTS
/* Assure that we are not on any hpts */