[openwrt/openwrt] kernel: remove obsolete netfilter tcp window size check bypass patch

LEDE Commits lede-commits at lists.infradead.org
Thu Mar 30 05:16:18 PDT 2023


nbd pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/75e78bcaab847557ce1782eb2dea9dff9a029171

commit 75e78bcaab847557ce1782eb2dea9dff9a029171
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Thu Mar 30 14:14:11 2023 +0200

    kernel: remove obsolete netfilter tcp window size check bypass patch
    
    On any currently supported hardware, the performance impact should not
    matter anymore.
    
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
---
 .../613-netfilter_optional_tcp_window_check.patch  | 73 -------------------
 .../613-netfilter_optional_tcp_window_check.patch  | 83 ----------------------
 2 files changed, 156 deletions(-)

diff --git a/target/linux/generic/pending-5.10/613-netfilter_optional_tcp_window_check.patch b/target/linux/generic/pending-5.10/613-netfilter_optional_tcp_window_check.patch
deleted file mode 100644
index 79fd2762b3..0000000000
--- a/target/linux/generic/pending-5.10/613-netfilter_optional_tcp_window_check.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From: Felix Fietkau <nbd at nbd.name>
-Subject: netfilter: optional tcp window check
-
-Signed-off-by: Felix Fietkau <nbd at nbd.name>
----
- net/netfilter/nf_conntrack_proto_tcp.c | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
-
---- a/net/netfilter/nf_conntrack_proto_tcp.c
-+++ b/net/netfilter/nf_conntrack_proto_tcp.c
-@@ -31,6 +31,9 @@
- #include <net/netfilter/ipv4/nf_conntrack_ipv4.h>
- #include <net/netfilter/ipv6/nf_conntrack_ipv6.h>
- 
-+/* Do not check the TCP window for incoming packets  */
-+static int nf_ct_tcp_no_window_check __read_mostly = 1;
-+
- /* "Be conservative in what you do,
-     be liberal in what you accept from others."
-     If it's non-zero, we mark only out of window RST segments as INVALID. */
-@@ -476,6 +479,9 @@ static bool tcp_in_window(const struct n
- 	s32 receiver_offset;
- 	bool res, in_recv_win;
- 
-+	if (nf_ct_tcp_no_window_check)
-+		return true;
-+
- 	/*
- 	 * Get the required data from the packet.
- 	 */
-@@ -1139,7 +1145,7 @@ int nf_conntrack_tcp_packet(struct nf_co
- 		 IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED &&
- 		 timeouts[new_state] > timeouts[TCP_CONNTRACK_UNACK])
- 		timeout = timeouts[TCP_CONNTRACK_UNACK];
--	else if (ct->proto.tcp.last_win == 0 &&
-+	else if (!nf_ct_tcp_no_window_check && ct->proto.tcp.last_win == 0 &&
- 		 timeouts[new_state] > timeouts[TCP_CONNTRACK_RETRANS])
- 		timeout = timeouts[TCP_CONNTRACK_RETRANS];
- 	else
---- a/net/netfilter/nf_conntrack_standalone.c
-+++ b/net/netfilter/nf_conntrack_standalone.c
-@@ -25,6 +25,9 @@
- #include <net/netfilter/nf_conntrack_timestamp.h>
- #include <linux/rculist_nulls.h>
- 
-+/* Do not check the TCP window for incoming packets  */
-+static int nf_ct_tcp_no_window_check __read_mostly = 1;
-+
- static bool enable_hooks __read_mostly;
- MODULE_PARM_DESC(enable_hooks, "Always enable conntrack hooks");
- module_param(enable_hooks, bool, 0000);
-@@ -657,6 +660,7 @@ enum nf_ct_sysctl_index {
- 	NF_SYSCTL_CT_PROTO_TIMEOUT_GRE_STREAM,
- #endif
- 
-+	NF_SYSCTL_CT_PROTO_TCP_NO_WINDOW_CHECK,
- 	__NF_SYSCTL_CT_LAST_SYSCTL,
- };
- 
-@@ -993,6 +997,13 @@ static struct ctl_table nf_ct_sysctl_tab
- 		.proc_handler   = proc_dointvec_jiffies,
- 	},
- #endif
-+	[NF_SYSCTL_CT_PROTO_TCP_NO_WINDOW_CHECK] = {
-+		.procname       = "nf_conntrack_tcp_no_window_check",
-+		.data           = &nf_ct_tcp_no_window_check,
-+		.maxlen         = sizeof(unsigned int),
-+		.mode           = 0644,
-+		.proc_handler   = proc_dointvec,
-+	},
- 	{}
- };
- 
diff --git a/target/linux/generic/pending-5.15/613-netfilter_optional_tcp_window_check.patch b/target/linux/generic/pending-5.15/613-netfilter_optional_tcp_window_check.patch
deleted file mode 100644
index cb3b63cdb1..0000000000
--- a/target/linux/generic/pending-5.15/613-netfilter_optional_tcp_window_check.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From: Felix Fietkau <nbd at nbd.name>
-Subject: netfilter: optional tcp window check
-
-Signed-off-by: Felix Fietkau <nbd at nbd.name>
-Signed-off-by: Christian 'Ansuel' Marangi <ansuelsmth at gmail.com>
----
- net/netfilter/nf_conntrack_proto_tcp.c | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
-
---- a/net/netfilter/nf_conntrack_proto_tcp.c
-+++ b/net/netfilter/nf_conntrack_proto_tcp.c
-@@ -465,6 +465,9 @@ static bool tcp_in_window(struct nf_conn
- 	s32 receiver_offset;
- 	bool res, in_recv_win;
- 
-+	if (tn->tcp_no_window_check)
-+		return true;
-+
- 	/*
- 	 * Get the required data from the packet.
- 	 */
-@@ -1191,7 +1194,7 @@ int nf_conntrack_tcp_packet(struct nf_co
- 		 IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED &&
- 		 timeouts[new_state] > timeouts[TCP_CONNTRACK_UNACK])
- 		timeout = timeouts[TCP_CONNTRACK_UNACK];
--	else if (ct->proto.tcp.last_win == 0 &&
-+	else if (!tn->tcp_no_window_check && ct->proto.tcp.last_win == 0 &&
- 		 timeouts[new_state] > timeouts[TCP_CONNTRACK_RETRANS])
- 		timeout = timeouts[TCP_CONNTRACK_RETRANS];
- 	else
-@@ -1507,6 +1510,9 @@ void nf_conntrack_tcp_init_net(struct ne
- 	 */
- 	tn->tcp_be_liberal = 0;
- 
-+	/* Skip Windows Check */
-+	tn->tcp_no_window_check = 0;
-+
- 	/* If it's non-zero, we turn off RST sequence number check */
- 	tn->tcp_ignore_invalid_rst = 0;
- 
---- a/net/netfilter/nf_conntrack_standalone.c
-+++ b/net/netfilter/nf_conntrack_standalone.c
-@@ -633,6 +633,7 @@ enum nf_ct_sysctl_index {
- #endif
- 	NF_SYSCTL_CT_PROTO_TCP_LOOSE,
- 	NF_SYSCTL_CT_PROTO_TCP_LIBERAL,
-+	NF_SYSCTL_CT_PROTO_TCP_NO_WINDOW_CHECK,
- 	NF_SYSCTL_CT_PROTO_TCP_IGNORE_INVALID_RST,
- 	NF_SYSCTL_CT_PROTO_TCP_MAX_RETRANS,
- 	NF_SYSCTL_CT_PROTO_TIMEOUT_UDP,
-@@ -848,6 +849,14 @@ static struct ctl_table nf_ct_sysctl_tab
- 		.extra1 	= SYSCTL_ZERO,
- 		.extra2 	= SYSCTL_ONE,
- 	},
-+	[NF_SYSCTL_CT_PROTO_TCP_NO_WINDOW_CHECK] = {
-+		.procname       = "nf_conntrack_tcp_no_window_check",
-+		.maxlen         = sizeof(u8),
-+		.mode           = 0644,
-+		.proc_handler	= proc_dou8vec_minmax,
-+		.extra1 	= SYSCTL_ZERO,
-+		.extra2 	= SYSCTL_ONE,
-+	},
- 	[NF_SYSCTL_CT_PROTO_TCP_IGNORE_INVALID_RST] = {
- 		.procname	= "nf_conntrack_tcp_ignore_invalid_rst",
- 		.maxlen		= sizeof(u8),
-@@ -1058,6 +1067,7 @@ static void nf_conntrack_standalone_init
- 
- 	XASSIGN(LOOSE, &tn->tcp_loose);
- 	XASSIGN(LIBERAL, &tn->tcp_be_liberal);
-+	XASSIGN(NO_WINDOW_CHECK, &tn->tcp_no_window_check);
- 	XASSIGN(MAX_RETRANS, &tn->tcp_max_retrans);
- 	XASSIGN(IGNORE_INVALID_RST, &tn->tcp_ignore_invalid_rst);
- #undef XASSIGN
---- a/include/net/netns/conntrack.h
-+++ b/include/net/netns/conntrack.h
-@@ -26,6 +26,7 @@ struct nf_tcp_net {
- 	unsigned int timeouts[TCP_CONNTRACK_TIMEOUT_MAX];
- 	u8 tcp_loose;
- 	u8 tcp_be_liberal;
-+	u8 tcp_no_window_check;
- 	u8 tcp_max_retrans;
- 	u8 tcp_ignore_invalid_rst;
- #if IS_ENABLED(CONFIG_NF_FLOW_TABLE)




More information about the lede-commits mailing list