Commit d0cfb790 authored by Josef Bacik's avatar Josef Bacik Committed by Wang Zhaolong
Browse files

nfs: expose /proc/net/sunrpc/nfs in net namespaces

stable inclusion
from stable-v5.10.217
commit 6eef21eb7a165601882dad0419a630e32d2d7a2c
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I9W3QR
CVE: CVE-2024-36939

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=6eef21eb7a165601882dad0419a630e32d2d7a2c



--------------------------------

[ Upstream commit d47151b79e3220e72ae323b8b8e9d6da20dc884e ]

We're using nfs mounts inside of containers in production and noticed
that the nfs stats are not exposed in /proc.  This is a problem for us
as we use these stats for monitoring, and have to do this awkward bind
mount from the main host into the container in order to get to these
states.

Add the rpc_proc_register call to the pernet operations entry and exit
points so these stats can be exposed inside of network namespaces.

Signed-off-by: default avatarJosef Bacik <josef@toxicpanda.com>
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
Stable-dep-of: 24457f1be29f ("nfs: Handle error of rpc_proc_register() in nfs_net_init().")
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
Signed-off-by: default avatarWang Zhaolong <wangzhaolong1@huawei.com>
parent b32d2b13
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -2226,11 +2226,13 @@ EXPORT_SYMBOL_GPL(nfs_net_id);
static int nfs_net_init(struct net *net)
{
	nfs_clients_init(net);
	rpc_proc_register(net, &nfs_rpcstat);
	return nfs_fs_proc_net_init(net);
}

static void nfs_net_exit(struct net *net)
{
	rpc_proc_unregister(net, "nfs");
	nfs_fs_proc_net_exit(net);
	nfs_clients_exit(net);
}
@@ -2289,15 +2291,12 @@ static int __init init_nfs_fs(void)
	if (err)
		goto out1;

	rpc_proc_register(&init_net, &nfs_rpcstat);

	err = register_nfs_fs();
	if (err)
		goto out0;

	return 0;
out0:
	rpc_proc_unregister(&init_net, "nfs");
	nfs_destroy_directcache();
out1:
	nfs_destroy_writepagecache();
@@ -2330,7 +2329,6 @@ static void __exit exit_nfs_fs(void)
	nfs_destroy_nfspagecache();
	nfs_fscache_unregister();
	unregister_pernet_subsys(&nfs_net_ops);
	rpc_proc_unregister(&init_net, "nfs");
	unregister_nfs_fs();
	nfs_fs_proc_exit();
	nfsiod_stop();