]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
netfilter: xt_CT: drop pending enqueued packets on template removal
authorPablo Neira Ayuso <pablo@netfilter.org>
Thu, 12 Mar 2026 12:48:48 +0000 (13:48 +0100)
committerFlorian Westphal <fw@strlen.de>
Fri, 13 Mar 2026 14:31:15 +0000 (15:31 +0100)
Templates refer to objects that can go away while packets are sitting in
nfqueue refer to:

- helper, this can be an issue on module removal.
- timeout policy, nfnetlink_cttimeout might remove it.

The use of templates with zone and event cache filter are safe, since
this just copies values.

Flush these enqueued packets in case the template rule gets removed.

Fixes: 24de58f46516 ("netfilter: xt_CT: allow to attach timeout policy + glue code")
Reported-by: Yiming Qian <yimingqian591@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Florian Westphal <fw@strlen.de>
net/netfilter/xt_CT.c

index 3ba94c34297cf5e24bfd7bcbce6b6977bd7204c2..498f5871c84a0efd3e2498fc4da10ece1b150db9 100644 (file)
@@ -16,6 +16,7 @@
 #include <net/netfilter/nf_conntrack_ecache.h>
 #include <net/netfilter/nf_conntrack_timeout.h>
 #include <net/netfilter/nf_conntrack_zones.h>
+#include "nf_internals.h"
 
 static inline int xt_ct_target(struct sk_buff *skb, struct nf_conn *ct)
 {
@@ -283,6 +284,9 @@ static void xt_ct_tg_destroy(const struct xt_tgdtor_param *par,
        struct nf_conn_help *help;
 
        if (ct) {
+               if (info->helper[0] || info->timeout[0])
+                       nf_queue_nf_hook_drop(par->net);
+
                help = nfct_help(ct);
                xt_ct_put_helper(help);