[PATCH] netfilter: nf_tables: Add __percpu annotation to *stats pointer in nf_tables_updchain()

Uros Bizjak posted 1 patch 1 year, 4 months ago
net/netfilter/nf_tables_api.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] netfilter: nf_tables: Add __percpu annotation to *stats pointer in nf_tables_updchain()
Posted by Uros Bizjak 1 year, 4 months ago
Compiling nf_tables_api.c results in several sparse warnings:

nf_tables_api.c:2740:23: warning: incorrect type in assignment (different address spaces)
nf_tables_api.c:2752:38: warning: incorrect type in assignment (different address spaces)
nf_tables_api.c:2798:21: warning: incorrect type in argument 1 (different address spaces)

Add __percpu annotation to *stats pointer to fix these warnings.

Found by GCC's named address space checks.

There were no changes in the resulting object files.

Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Cc: Pablo Neira Ayuso <pablo@netfilter.org>
Cc: Jozsef Kadlecsik <kadlec@netfilter.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Paolo Abeni <pabeni@redhat.com>
---
 net/netfilter/nf_tables_api.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
index 481ee78e77bc..805227131f10 100644
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -2642,7 +2642,7 @@ static int nf_tables_updchain(struct nft_ctx *ctx, u8 genmask, u8 policy,
 	struct nft_table *table = ctx->table;
 	struct nft_chain *chain = ctx->chain;
 	struct nft_chain_hook hook = {};
-	struct nft_stats *stats = NULL;
+	struct nft_stats __percpu *stats = NULL;
 	struct nft_hook *h, *next;
 	struct nf_hook_ops *ops;
 	struct nft_trans *trans;
-- 
2.45.2
Re: [PATCH] netfilter: nf_tables: Add __percpu annotation to *stats pointer in nf_tables_updchain()
Posted by Pablo Neira Ayuso 1 year, 3 months ago
On Tue, Aug 06, 2024 at 12:26:58PM +0200, Uros Bizjak wrote:
> Compiling nf_tables_api.c results in several sparse warnings:
> 
> nf_tables_api.c:2740:23: warning: incorrect type in assignment (different address spaces)
> nf_tables_api.c:2752:38: warning: incorrect type in assignment (different address spaces)
> nf_tables_api.c:2798:21: warning: incorrect type in argument 1 (different address spaces)
> 
> Add __percpu annotation to *stats pointer to fix these warnings.
> 
> Found by GCC's named address space checks.
> 
> There were no changes in the resulting object files.

I never replied to this.

I can see this is getting things better, but still more sparse
warnings show up related tho nft_stats. I'd prefer those are fixed at
ones, would you give it a look?

> Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
> Cc: Pablo Neira Ayuso <pablo@netfilter.org>
> Cc: Jozsef Kadlecsik <kadlec@netfilter.org>
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: Eric Dumazet <edumazet@google.com>
> Cc: Jakub Kicinski <kuba@kernel.org>
> Cc: Paolo Abeni <pabeni@redhat.com>
> ---
>  net/netfilter/nf_tables_api.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
> index 481ee78e77bc..805227131f10 100644
> --- a/net/netfilter/nf_tables_api.c
> +++ b/net/netfilter/nf_tables_api.c
> @@ -2642,7 +2642,7 @@ static int nf_tables_updchain(struct nft_ctx *ctx, u8 genmask, u8 policy,
>  	struct nft_table *table = ctx->table;
>  	struct nft_chain *chain = ctx->chain;
>  	struct nft_chain_hook hook = {};
> -	struct nft_stats *stats = NULL;
> +	struct nft_stats __percpu *stats = NULL;
>  	struct nft_hook *h, *next;
>  	struct nf_hook_ops *ops;
>  	struct nft_trans *trans;
> -- 
> 2.45.2
>
Re: [PATCH] netfilter: nf_tables: Add __percpu annotation to *stats pointer in nf_tables_updchain()
Posted by Uros Bizjak 1 year, 3 months ago
On Wed, Aug 28, 2024 at 4:53 PM Pablo Neira Ayuso <pablo@netfilter.org> wrote:
>
> On Tue, Aug 06, 2024 at 12:26:58PM +0200, Uros Bizjak wrote:
> > Compiling nf_tables_api.c results in several sparse warnings:
> >
> > nf_tables_api.c:2740:23: warning: incorrect type in assignment (different address spaces)
> > nf_tables_api.c:2752:38: warning: incorrect type in assignment (different address spaces)
> > nf_tables_api.c:2798:21: warning: incorrect type in argument 1 (different address spaces)
> >
> > Add __percpu annotation to *stats pointer to fix these warnings.
> >
> > Found by GCC's named address space checks.
> >
> > There were no changes in the resulting object files.
>
> I never replied to this.
>
> I can see this is getting things better, but still more sparse
> warnings show up related tho nft_stats. I'd prefer those are fixed at
> ones, would you give it a look?

Yes, I have a follow-up patch that also fixes the remaining warnings,
but it depends on a patch [1] that is on the way to mainline through
the mm tree.

I can post the complete patch that uses percpu variants of ERR_PTR,
IS_ERR and PTR_ERR where needed if this dependency can temporarily be
tolerated.

[1] https://lore.kernel.org/lkml/20240818210235.33481-1-ubizjak@gmail.com/

Thanks,
Uros.
Re: [PATCH] netfilter: nf_tables: Add __percpu annotation to *stats pointer in nf_tables_updchain()
Posted by Pablo Neira Ayuso 1 year, 3 months ago
On Wed, Aug 28, 2024 at 09:29:14PM +0200, Uros Bizjak wrote:
> On Wed, Aug 28, 2024 at 4:53 PM Pablo Neira Ayuso <pablo@netfilter.org> wrote:
> >
> > On Tue, Aug 06, 2024 at 12:26:58PM +0200, Uros Bizjak wrote:
> > > Compiling nf_tables_api.c results in several sparse warnings:
> > >
> > > nf_tables_api.c:2740:23: warning: incorrect type in assignment (different address spaces)
> > > nf_tables_api.c:2752:38: warning: incorrect type in assignment (different address spaces)
> > > nf_tables_api.c:2798:21: warning: incorrect type in argument 1 (different address spaces)
> > >
> > > Add __percpu annotation to *stats pointer to fix these warnings.
> > >
> > > Found by GCC's named address space checks.
> > >
> > > There were no changes in the resulting object files.
> >
> > I never replied to this.
> >
> > I can see this is getting things better, but still more sparse
> > warnings show up related tho nft_stats. I'd prefer those are fixed at
> > ones, would you give it a look?
> 
> Yes, I have a follow-up patch that also fixes the remaining warnings,
> but it depends on a patch [1] that is on the way to mainline through
> the mm tree.
> 
> I can post the complete patch that uses percpu variants of ERR_PTR,
> IS_ERR and PTR_ERR where needed if this dependency can temporarily be
> tolerated.
> 
> [1] https://lore.kernel.org/lkml/20240818210235.33481-1-ubizjak@gmail.com/

Thanks for explaining.

Post the patch to netfilter-devel@vger.kernel.org explaining the
dependency so it sits there and I remember about it while it gets
upstream.

If there is any issue and this patch does not reach mm tree, let me
know.

Thanks
Re: [PATCH] netfilter: nf_tables: Add __percpu annotation to *stats pointer in nf_tables_updchain()
Posted by Simon Horman 1 year, 4 months ago
On Tue, Aug 06, 2024 at 12:26:58PM +0200, Uros Bizjak wrote:
> Compiling nf_tables_api.c results in several sparse warnings:
> 
> nf_tables_api.c:2740:23: warning: incorrect type in assignment (different address spaces)
> nf_tables_api.c:2752:38: warning: incorrect type in assignment (different address spaces)
> nf_tables_api.c:2798:21: warning: incorrect type in argument 1 (different address spaces)
> 
> Add __percpu annotation to *stats pointer to fix these warnings.
> 
> Found by GCC's named address space checks.
> 
> There were no changes in the resulting object files.
> 
> Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
> Cc: Pablo Neira Ayuso <pablo@netfilter.org>
> Cc: Jozsef Kadlecsik <kadlec@netfilter.org>
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: Eric Dumazet <edumazet@google.com>
> Cc: Jakub Kicinski <kuba@kernel.org>
> Cc: Paolo Abeni <pabeni@redhat.com>
> ---
>  net/netfilter/nf_tables_api.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
> index 481ee78e77bc..805227131f10 100644
> --- a/net/netfilter/nf_tables_api.c
> +++ b/net/netfilter/nf_tables_api.c
> @@ -2642,7 +2642,7 @@ static int nf_tables_updchain(struct nft_ctx *ctx, u8 genmask, u8 policy,
>  	struct nft_table *table = ctx->table;
>  	struct nft_chain *chain = ctx->chain;
>  	struct nft_chain_hook hook = {};
> -	struct nft_stats *stats = NULL;
> +	struct nft_stats __percpu *stats = NULL;
>  	struct nft_hook *h, *next;
>  	struct nf_hook_ops *ops;
>  	struct nft_trans *trans;

Thanks, I agree that users of this local variable expect it
to be annotated as __percpu.

Reviewed-by: Simon Horman <horms@kernel.org>