1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-feeds.git synced 2025-03-09 15:40:03 +00:00
openmptcprouter-feeds/qaa/qca-nss-ecm/patches/101-Fix_Kern_Panic_on_UDP_CONNTRACK.patch
2022-09-10 05:56:57 +08:00

60 lines
2 KiB
Diff

diff --git a/frontends/nss/ecm_nss_ipv4.c b/frontends/nss/ecm_nss_ipv4.c
index 1ce4b61..29e70ba 100644
--- a/frontends/nss/ecm_nss_ipv4.c
+++ b/frontends/nss/ecm_nss_ipv4.c
@@ -2171,6 +2171,10 @@ sync_conntrack:
timeouts = nf_ct_timeout_lookup(ct);
+ /* Copy of udp_get_timeouts in kernel */
+ if (!timeouts)
+ timeouts = nf_udp_pernet(nf_ct_net(ct))->timeouts;
+
spin_lock_bh(&ct->lock);
ct->timeout = jiffies + timeouts[UDP_CT_REPLIED];
spin_unlock_bh(&ct->lock);
diff --git a/frontends/nss/ecm_nss_ipv6.c b/frontends/nss/ecm_nss_ipv6.c
index 2adc5ec..08253b6 100644
--- a/frontends/nss/ecm_nss_ipv6.c
+++ b/frontends/nss/ecm_nss_ipv6.c
@@ -1883,6 +1883,10 @@ sync_conntrack:
timeouts = nf_ct_timeout_lookup(ct);
+ /* Copy of udp_get_timeouts in kernel */
+ if (!timeouts)
+ timeouts = nf_udp_pernet(nf_ct_net(ct))->timeouts;
+
spin_lock_bh(&ct->lock);
ct->timeout = jiffies + timeouts[UDP_CT_REPLIED];
spin_unlock_bh(&ct->lock);
diff --git a/frontends/sfe/ecm_sfe_ipv4.c b/frontends/sfe/ecm_sfe_ipv4.c
index 7cfe4fc..8f525ee 100644
--- a/frontends/sfe/ecm_sfe_ipv4.c
+++ b/frontends/sfe/ecm_sfe_ipv4.c
@@ -1608,6 +1608,10 @@ sync_conntrack:
timeouts = nf_ct_timeout_lookup(ct);
+ /* Copy of udp_get_timeouts in kernel */
+ if (!timeouts)
+ timeouts = nf_udp_pernet(nf_ct_net(ct))->timeouts;
+
spin_lock_bh(&ct->lock);
ct->timeout = jiffies + timeouts[UDP_CT_REPLIED];
spin_unlock_bh(&ct->lock);
diff --git a/frontends/sfe/ecm_sfe_ipv6.c b/frontends/sfe/ecm_sfe_ipv6.c
index dfde309..47c531a 100644
--- a/frontends/sfe/ecm_sfe_ipv6.c
+++ b/frontends/sfe/ecm_sfe_ipv6.c
@@ -1321,6 +1321,10 @@ sync_conntrack:
timeouts = nf_ct_timeout_lookup(ct);
+ /* Copy of udp_get_timeouts in kernel */
+ if (!timeouts)
+ timeouts = nf_udp_pernet(nf_ct_net(ct))->timeouts;
+
spin_lock_bh(&ct->lock);
ct->timeout = jiffies + timeouts[UDP_CT_REPLIED];
spin_unlock_bh(&ct->lock);