Stefano Brivio sbrivio@redhat.com wrote:
The lkp kernel test robot reports, with CONFIG_DEBUG_PREEMPT enabled:
[..]
diff --git a/net/netfilter/nft_set_pipapo.c b/net/netfilter/nft_set_pipapo.c index 8b5acc6910fd..8c04388296b0 100644 --- a/net/netfilter/nft_set_pipapo.c +++ b/net/netfilter/nft_set_pipapo.c @@ -1242,7 +1242,9 @@ static int nft_pipapo_insert(const struct net *net, const struct nft_set *set, end += NFT_PIPAPO_GROUPS_PADDED_SIZE(f); }
- if (!*this_cpu_ptr(m->scratch) || bsize_max > m->bsize_max) {
- if (!*get_cpu_ptr(m->scratch) || bsize_max > m->bsize_max) {
put_cpu_ptr(m->scratch);
- err = pipapo_realloc_scratch(m, bsize_max); if (err) return err;
@@ -1250,6 +1252,8 @@ static int nft_pipapo_insert(const struct net *net, const struct nft_set *set, this_cpu_write(nft_pipapo_scratch_index, false);
Won't that mean that this_cpu_write() can occur on a different CPU than the get_cpu_ptr() ptr check was done on?