diff options
author | eri <eri@FreeBSD.org> | 2011-07-04 17:43:04 +0000 |
---|---|---|
committer | eri <eri@FreeBSD.org> | 2011-07-04 17:43:04 +0000 |
commit | c5ab57bbd450f270e9b9f990017097cd03e57f89 (patch) | |
tree | 38b4940194b76a6626145648769cda0d8756b65b | |
parent | 8ea91bf8fbda357e3634c88c46ea8cd91ec580a7 (diff) | |
download | FreeBSD-src-c5ab57bbd450f270e9b9f990017097cd03e57f89.zip FreeBSD-src-c5ab57bbd450f270e9b9f990017097cd03e57f89.tar.gz |
pf(4) tags now store the state key but tcp_respond tries to reuse a mbuf as an optimization.
This makes pf find the wrong state and cause errors reported with state mismatches.
Clear the cached state link on the pf(4) tag to avoid the state mismatches.
Approved by: bz
-rw-r--r-- | sys/netinet/tcp_subr.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index 6ed58911..043cd87 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -541,6 +541,7 @@ tcp_respond(struct tcpcb *tp, void *ipgen, struct tcphdr *th, struct mbuf *m, m_freem(m->m_next); m->m_next = NULL; m->m_data = (caddr_t)ipgen; + m_addr_changed(m); /* m_len is set later */ tlen = 0; #define xchg(a,b,type) { type t; t=a; a=b; b=t; } |