]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
netfilter: nfnetlink_queue: make hash table per queue
authorFlorian Westphal <fw@strlen.de>
Tue, 7 Apr 2026 15:00:01 +0000 (17:00 +0200)
committerFlorian Westphal <fw@strlen.de>
Wed, 8 Apr 2026 11:34:51 +0000 (13:34 +0200)
commit936206e3f6ff411581e615e930263d6f8b78df9d
tree19ac9b93237d0326546edb6bcc4814670a6906ea
parentf8dca15a1b190787bbd03285304b569631160eda
netfilter: nfnetlink_queue: make hash table per queue

Sharing a global hash table among all queues is tempting, but
it can cause crash:

BUG: KASAN: slab-use-after-free in nfqnl_recv_verdict+0x11ac/0x15e0 [nfnetlink_queue]
[..]
 nfqnl_recv_verdict+0x11ac/0x15e0 [nfnetlink_queue]
 nfnetlink_rcv_msg+0x46a/0x930
 kmem_cache_alloc_node_noprof+0x11e/0x450

struct nf_queue_entry is freed via kfree, but parallel cpu can still
encounter such an nf_queue_entry when walking the list.

Alternative fix is to free the nf_queue_entry via kfree_rcu() instead,
but as we have to alloc/free for each skb this will cause more mem
pressure.

Cc: Scott Mitchell <scott.k.mitch1@gmail.com>
Fixes: e19079adcd26 ("netfilter: nfnetlink_queue: optimize verdict lookup with hash table")
Signed-off-by: Florian Westphal <fw@strlen.de>
include/net/netfilter/nf_queue.h
net/netfilter/nfnetlink_queue.c