summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_input.c
diff options
context:
space:
mode:
authormikeb <mikeb@openbsd.org>2013-07-31 15:41:51 +0000
committermikeb <mikeb@openbsd.org>2013-07-31 15:41:51 +0000
commit178fea0169fba843ff25128d91cdf240ac6d302a (patch)
treeee87bc57e956fdb7538c2ca104857d9691d9d086 /sys/netinet/tcp_input.c
parentRemove the sysmerge(8) glue from the installer -- it's never been used (diff)
downloadwireguard-openbsd-178fea0169fba843ff25128d91cdf240ac6d302a.tar.xz
wireguard-openbsd-178fea0169fba843ff25128d91cdf240ac6d302a.zip
Move bridge_broadcast and subsequently all IPsec SPD lookup code out
of the IPL_NET. pf_test should be no longer called under IPL_NET as well. The problem became evident after the related issue was brought up by David Hill <dhill at mindcry ! org>. With input from and OK mpi. Tested by David and me.
Diffstat (limited to 'sys/netinet/tcp_input.c')
-rw-r--r--sys/netinet/tcp_input.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c
index 4e39e7f1f6f..734ae46c916 100644
--- a/sys/netinet/tcp_input.c
+++ b/sys/netinet/tcp_input.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tcp_input.c,v 1.265 2013/07/01 10:53:52 bluhm Exp $ */
+/* $OpenBSD: tcp_input.c,v 1.266 2013/07/31 15:41:52 mikeb Exp $ */
/* $NetBSD: tcp_input.c,v 1.23 1996/02/13 23:43:44 christos Exp $ */
/*
@@ -378,7 +378,7 @@ tcp_input(struct mbuf *m, ...)
struct m_tag *mtag;
struct tdb_ident *tdbi;
struct tdb *tdb;
- int error, s;
+ int error;
#endif /* IPSEC */
int af;
#ifdef TCP_ECN
@@ -886,7 +886,6 @@ findpcb:
#ifdef IPSEC
/* Find most recent IPsec tag */
mtag = m_tag_find(m, PACKET_TAG_IPSEC_IN_DONE, NULL);
- s = splnet();
if (mtag != NULL) {
tdbi = (struct tdb_ident *)(mtag + 1);
tdb = gettdb(tdbi->rdomain, tdbi->spi,
@@ -897,7 +896,6 @@ findpcb:
tdb, inp, 0);
if (error) {
tcpstat.tcps_rcvnosec++;
- splx(s);
goto drop;
}
@@ -909,7 +907,6 @@ findpcb:
inp->inp_ipo = ipsec_add_policy(inp, af,
IPSP_DIRECTION_OUT);
if (inp->inp_ipo == NULL) {
- splx(s);
goto drop;
}
}
@@ -936,7 +933,6 @@ findpcb:
inp->inp_tdb_in = NULL;
}
}
- splx(s);
#endif /* IPSEC */
/*
@@ -969,7 +965,7 @@ findpcb:
/* subtract out the tcp timestamp modulator */
opti.ts_ecr -= tp->ts_modulate;
-
+
/* make sure ts_ecr is sensible */
rtt_test = tcp_now - opti.ts_ecr;
if (rtt_test < 0 || rtt_test > TCP_RTT_MAX)