kernel: remove obsolete netfilter tcp window size check bypass patch
authorFelix Fietkau <nbd@nbd.name>
Thu, 30 Mar 2023 12:16:35 +0000 (14:16 +0200)
committerFelix Fietkau <nbd@nbd.name>
Thu, 30 Mar 2023 12:17:21 +0000 (14:17 +0200)
On any currently supported hardware, the performance impact should not
matter anymore.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 75e78bcaab847557ce1782eb2dea9dff9a029171)

target/linux/generic/pending-5.10/613-netfilter_optional_tcp_window_check.patch [deleted file]

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 (file)
index 79fd276..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-From: Felix Fietkau <nbd@nbd.name>
-Subject: netfilter: optional tcp window check
-
-Signed-off-by: Felix Fietkau <nbd@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,
-+      },
-       {}
- };