Commit 4102db17 authored by Jeff Layton's avatar Jeff Layton Committed by Chuck Lever

nfsd: don't destroy global nfs4_file table in per-net shutdown

The nfs4_file table is global, so shutting it down when a containerized
nfsd is shut down is wrong and can lead to double-frees. Tear down the
nfs4_file_rhltable in nfs4_state_shutdown instead of
nfs4_state_shutdown_net.

Fixes: d47b295e ("NFSD: Use rhashtable for managing nfs4_file objects")
Link: https://bugzilla.redhat.com/show_bug.cgi?id=2169017Reported-by: default avatarJianHong Yin <jiyin@redhat.com>
Signed-off-by: default avatarJeff Layton <jlayton@kernel.org>
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
parent 4bdbba54
...@@ -8182,7 +8182,6 @@ nfs4_state_shutdown_net(struct net *net) ...@@ -8182,7 +8182,6 @@ nfs4_state_shutdown_net(struct net *net)
nfsd4_client_tracking_exit(net); nfsd4_client_tracking_exit(net);
nfs4_state_destroy_net(net); nfs4_state_destroy_net(net);
rhltable_destroy(&nfs4_file_rhltable);
#ifdef CONFIG_NFSD_V4_2_INTER_SSC #ifdef CONFIG_NFSD_V4_2_INTER_SSC
nfsd4_ssc_shutdown_umount(nn); nfsd4_ssc_shutdown_umount(nn);
#endif #endif
...@@ -8192,6 +8191,7 @@ void ...@@ -8192,6 +8191,7 @@ void
nfs4_state_shutdown(void) nfs4_state_shutdown(void)
{ {
nfsd4_destroy_callback_queue(); nfsd4_destroy_callback_queue();
rhltable_destroy(&nfs4_file_rhltable);
} }
static void static void
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment