]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
netfilter: nft_set_pipapo: fix null deref for empty set
authorFlorian Westphal <fw@strlen.de>
Mon, 11 Aug 2025 10:26:10 +0000 (12:26 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 19 Sep 2025 14:35:51 +0000 (16:35 +0200)
commit 30c1d25b9870d551be42535067d5481668b5e6f3 upstream.

Blamed commit broke the check for a null scratch map:
  -  if (unlikely(!m || !*raw_cpu_ptr(m->scratch)))
  +  if (unlikely(!raw_cpu_ptr(m->scratch)))

This should have been "if (!*raw_ ...)".
Use the pattern of the avx2 version which is more readable.

This can only be reproduced if avx2 support isn't available.

Fixes: d8d871a35ca9 ("netfilter: nft_set_pipapo: merge pipapo_get/lookup")
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/netfilter/nft_set_pipapo.c

index fa6741b3205a6a04ea4d631915a86ba489a7345a..793790d79d1384c853a866b7b6e85d04fc2c408b 100644 (file)
@@ -426,10 +426,9 @@ static struct nft_pipapo_elem *pipapo_get(const struct nft_pipapo_match *m,
 
        local_bh_disable();
 
-       if (unlikely(!raw_cpu_ptr(m->scratch)))
-               goto out;
-
        scratch = *raw_cpu_ptr(m->scratch);
+       if (unlikely(!scratch))
+               goto out;
 
        map_index = scratch->map_index;