]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
netfilter: xt_NFQUEUE: prefer raw_smp_processor_id
authorFernando Fernandez Mancera <fmancera@suse.de>
Fri, 22 May 2026 10:47:17 +0000 (12:47 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 1 Jun 2026 11:43:52 +0000 (13:43 +0200)
With PREEMPT_RCU this triggers a splat because smp_processor_id() can be
preempted while inside a RCU critical section. If xt_NFQUEUE target is
invoked via nft_compat_eval() path, we are inside a RCU critical
section.

Just use the raw version instead.

Fixes: 0ca743a55991 ("netfilter: nf_tables: add compatibility layer for x_tables")
Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/xt_NFQUEUE.c

index 466da23e36ff474234cb0d4e1138c09a1d48daf4..b32d153e3a1862a1e8acdd63315cafb73b9ec969 100644 (file)
@@ -91,7 +91,7 @@ nfqueue_tg_v3(struct sk_buff *skb, const struct xt_action_param *par)
 
        if (info->queues_total > 1) {
                if (info->flags & NFQ_FLAG_CPU_FANOUT) {
-                       int cpu = smp_processor_id();
+                       int cpu = raw_smp_processor_id();
 
                        queue = info->queuenum + cpu % info->queues_total;
                } else {