2024-05-26 00:01:47

by Chuck Lever

[permalink] [raw]
Subject: [PATCH] sunrpc: use the struct net as the svc proc private

From: Josef Bacik <[email protected]>

[ Upstream commit 418b9687dece5bd763c09b5c27a801a7e3387be9 ]

nfsd is the only thing using this helper, and it doesn't use the private
currently. When we switch to per-network namespace stats we will need
the struct net * in order to get to the nfsd_net. Use the net as the
proc private so we can utilize this when we make the switch over.

Signed-off-by: Josef Bacik <[email protected]>
Reviewed-by: Jeff Layton <[email protected]>
Signed-off-by: Chuck Lever <[email protected]>
---
net/sunrpc/stats.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)


I investigated the crash reported by Chris and Jaroslav. This patch
is missing from v6.8.y.


diff --git a/net/sunrpc/stats.c b/net/sunrpc/stats.c
index 65fc1297c6df..383860cb1d5b 100644
--- a/net/sunrpc/stats.c
+++ b/net/sunrpc/stats.c
@@ -314,7 +314,7 @@ EXPORT_SYMBOL_GPL(rpc_proc_unregister);
struct proc_dir_entry *
svc_proc_register(struct net *net, struct svc_stat *statp, const struct proc_ops *proc_ops)
{
- return do_register(net, statp->program->pg_name, statp, proc_ops);
+ return do_register(net, statp->program->pg_name, net, proc_ops);
}
EXPORT_SYMBOL_GPL(svc_proc_register);

--
2.45.1



2024-05-27 06:57:19

by Jaroslav Pulchart

[permalink] [raw]
Subject: Re: [PATCH] sunrpc: use the struct net as the svc proc private

>
> From: Josef Bacik <[email protected]>
>
> [ Upstream commit 418b9687dece5bd763c09b5c27a801a7e3387be9 ]
>
> nfsd is the only thing using this helper, and it doesn't use the private
> currently. When we switch to per-network namespace stats we will need
> the struct net * in order to get to the nfsd_net. Use the net as the
> proc private so we can utilize this when we make the switch over.
>
> Signed-off-by: Josef Bacik <[email protected]>
> Reviewed-by: Jeff Layton <[email protected]>
> Signed-off-by: Chuck Lever <[email protected]>
> ---
> net/sunrpc/stats.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
>
> I investigated the crash reported by Chris and Jaroslav. This patch
> is missing from v6.8.y.
>
>
> diff --git a/net/sunrpc/stats.c b/net/sunrpc/stats.c
> index 65fc1297c6df..383860cb1d5b 100644
> --- a/net/sunrpc/stats.c
> +++ b/net/sunrpc/stats.c
> @@ -314,7 +314,7 @@ EXPORT_SYMBOL_GPL(rpc_proc_unregister);
> struct proc_dir_entry *
> svc_proc_register(struct net *net, struct svc_stat *statp, const struct proc_ops *proc_ops)
> {
> - return do_register(net, statp->program->pg_name, statp, proc_ops);
> + return do_register(net, statp->program->pg_name, net, proc_ops);
> }
> EXPORT_SYMBOL_GPL(svc_proc_register);
>
> --
> 2.45.1
>

I applied a mentioned commit 418b9687dece5bd763c09b5c27a801a7e3387be9
as a patch for 6.8.y and the system did not get stuck by the "nfsstat"
command.

2024-05-27 10:47:27

by Chris Rankin

[permalink] [raw]
Subject: Re: [PATCH] sunrpc: use the struct net as the svc proc private

Hi,

This patch also fixes the periodic oops from my kernel. (I suspect
Fedora 40 is invoking nfsstat or similar in the background every 5
minutes.)

Thanks,
Chris

On Mon, 27 May 2024 at 07:57, Jaroslav Pulchart
<[email protected]> wrote:
>
> >
> > From: Josef Bacik <[email protected]>
> >
> > [ Upstream commit 418b9687dece5bd763c09b5c27a801a7e3387be9 ]
> >
> > nfsd is the only thing using this helper, and it doesn't use the private
> > currently. When we switch to per-network namespace stats we will need
> > the struct net * in order to get to the nfsd_net. Use the net as the
> > proc private so we can utilize this when we make the switch over.
> >
> > Signed-off-by: Josef Bacik <[email protected]>
> > Reviewed-by: Jeff Layton <[email protected]>
> > Signed-off-by: Chuck Lever <[email protected]>
> > ---
> > net/sunrpc/stats.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> >
> > I investigated the crash reported by Chris and Jaroslav. This patch
> > is missing from v6.8.y.
> >
> >
> > diff --git a/net/sunrpc/stats.c b/net/sunrpc/stats.c
> > index 65fc1297c6df..383860cb1d5b 100644
> > --- a/net/sunrpc/stats.c
> > +++ b/net/sunrpc/stats.c
> > @@ -314,7 +314,7 @@ EXPORT_SYMBOL_GPL(rpc_proc_unregister);
> > struct proc_dir_entry *
> > svc_proc_register(struct net *net, struct svc_stat *statp, const struct proc_ops *proc_ops)
> > {
> > - return do_register(net, statp->program->pg_name, statp, proc_ops);
> > + return do_register(net, statp->program->pg_name, net, proc_ops);
> > }
> > EXPORT_SYMBOL_GPL(svc_proc_register);
> >
> > --
> > 2.45.1
> >
>
> I applied a mentioned commit 418b9687dece5bd763c09b5c27a801a7e3387be9
> as a patch for 6.8.y and the system did not get stuck by the "nfsstat"
> command.