Message ID | 20210420122415.v2jtayiw3n4ds7t7@Fryzen495 |
---|---|
State | Changes Requested |
Delegated to: | Pablo Neira |
Headers | show |
Series | netfilter: conntrack: Reset the max ACK flag on SYN in ignore state | expand |
Ali Abdallah <ali.abdallah@suse.com> wrote: > In ignore state, we let SYN goes in original, the server might respond > with RST/ACK, and that RST packet is erroneously dropped because of the > flag IP_CT_TCP_FLAG_MAXACK_SET being already set. Acked-by: Florian Westphal <fw@strlen.de>
diff --git a/net/netfilter/nf_conntrack_proto_tcp.c b/net/netfilter/nf_conntrack_proto_tcp.c index ec23330687a5..02fab7a8ec92 100644 --- a/net/netfilter/nf_conntrack_proto_tcp.c +++ b/net/netfilter/nf_conntrack_proto_tcp.c @@ -963,6 +963,10 @@ int nf_conntrack_tcp_packet(struct nf_conn *ct, ct->proto.tcp.last_flags = ct->proto.tcp.last_wscale = 0; + /* Reset the max ack flag so in case the server replies + * with RST/ACK it will not be marked as an invalid rst. + */ + ct->proto.tcp.seen[dir].flags &= ~IP_CT_TCP_FLAG_MAXACK_SET; tcp_options(skb, dataoff, th, &seen); if (seen.flags & IP_CT_TCP_FLAG_WINDOW_SCALE) { ct->proto.tcp.last_flags |=
In ignore state, we let SYN goes in original, the server might respond with RST/ACK, and that RST packet is erroneously dropped because of the flag IP_CT_TCP_FLAG_MAXACK_SET being already set. Signed-off-by: Ali Abdallah <aabdallah@suse.de> --- net/netfilter/nf_conntrack_proto_tcp.c | 4 ++++ 1 file changed, 4 insertions(+)